@harvest-finance/harvest-strategy-polygon 0.0.1-security → 1.0.0

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.

Potentially problematic release.


This version of @harvest-finance/harvest-strategy-polygon might be problematic. Click here for more details.

Files changed (485) hide show
  1. package/README.md +110 -5
  2. package/contracts/base/Controller.sol +125 -0
  3. package/contracts/base/ControllerV2.sol +363 -0
  4. package/contracts/base/FeeRewardForwarder.sol +163 -0
  5. package/contracts/base/PotPool.sol +360 -0
  6. package/contracts/base/ProfitSharingReceiver.sol +39 -0
  7. package/contracts/base/RewardForwarderV2.sol +109 -0
  8. package/contracts/base/Vault.sol +344 -0
  9. package/contracts/base/VaultERC4626.sol +113 -0
  10. package/contracts/base/VaultProxy.sol +35 -0
  11. package/contracts/base/VaultStorage.sol +199 -0
  12. package/contracts/base/VaultStorageV2.sol +196 -0
  13. package/contracts/base/VaultV2.sol +369 -0
  14. package/contracts/base/ape-base/MiniApeV2Strategy.sol +322 -0
  15. package/contracts/base/ape-base/interface/IMiniChefV2.sol +31 -0
  16. package/contracts/base/ape-base/interface/IRewarder.sol +10 -0
  17. package/contracts/base/factory/MegaFactory.sol +120 -0
  18. package/contracts/base/factory/interface/IPoolFactory.sol +6 -0
  19. package/contracts/base/factory/interface/IStrategyFactory.sol +6 -0
  20. package/contracts/base/factory/interface/IVaultFactory.sol +7 -0
  21. package/contracts/base/factory/pool/PotPoolFactory.sol +43 -0
  22. package/contracts/base/factory/strategy/UpgradableStrategyFactory.sol +19 -0
  23. package/contracts/base/factory/vault/RegularVaultFactory.sol +34 -0
  24. package/contracts/base/incentives/GlobalIncentivesHelper.sol +167 -0
  25. package/contracts/base/incentives/NotifyHelperGeneric.sol +61 -0
  26. package/contracts/base/incentives/NotifyHelperStateful.sol +290 -0
  27. package/contracts/base/inheritance/Controllable.sol +26 -0
  28. package/contracts/base/inheritance/ControllableInit.sol +31 -0
  29. package/contracts/base/inheritance/Governable.sol +29 -0
  30. package/contracts/base/inheritance/GovernableInit.sol +51 -0
  31. package/contracts/base/inheritance/IUpgradeSource.sol +8 -0
  32. package/contracts/base/inheritance/OwnableWhitelist.sol +17 -0
  33. package/contracts/base/inheritance/RewardTokenProfitNotifier.sol +48 -0
  34. package/contracts/base/inheritance/Storage.sol +36 -0
  35. package/contracts/base/interface/IController.sol +30 -0
  36. package/contracts/base/interface/IControllerV2.sol +135 -0
  37. package/contracts/base/interface/IERC4626.sol +263 -0
  38. package/contracts/base/interface/IFeeRewardForwarder.sol +9 -0
  39. package/contracts/base/interface/IProfitSharingReceiver.sol +10 -0
  40. package/contracts/base/interface/IRewardForwarder.sol +58 -0
  41. package/contracts/base/interface/IRewardPool.sol +34 -0
  42. package/contracts/base/interface/IStrategy.sol +25 -0
  43. package/contracts/base/interface/IUniversalLiquidator.sol +21 -0
  44. package/contracts/base/interface/IUniversalLiquidatorRegistry.sol +20 -0
  45. package/contracts/base/interface/IUpgradeSource.sol +8 -0
  46. package/contracts/base/interface/IVault.sol +35 -0
  47. package/contracts/base/interface/aave/DataTypes.sol +266 -0
  48. package/contracts/base/interface/aave/IAToken.sol +37 -0
  49. package/contracts/base/interface/aave/IPool.sol +13 -0
  50. package/contracts/base/interface/balancer/Gauge.sol +22 -0
  51. package/contracts/base/interface/balancer/IBVault.sol +557 -0
  52. package/contracts/base/interface/balancer/IBalancerMinter.sol +114 -0
  53. package/contracts/base/interface/balancer/linearPool/ILinearPool.sol +185 -0
  54. package/contracts/base/interface/balancer/linearPool/ILinearPoolFactory.sol +16 -0
  55. package/contracts/base/interface/balancer/linearPool/ILinearPoolRebalancer.sol +8 -0
  56. package/contracts/base/interface/balancer/linearPool/IPoolSwapStructs.sol +57 -0
  57. package/contracts/base/interface/caviar/ICaviarChef.sol +16 -0
  58. package/contracts/base/interface/compound/IComet.sol +114 -0
  59. package/contracts/base/interface/compound/ICometRewards.sol +17 -0
  60. package/contracts/base/interface/curve/Gauge.sol +25 -0
  61. package/contracts/base/interface/curve/ICurveDeposit_2token.sol +25 -0
  62. package/contracts/base/interface/curve/ICurveDeposit_2token_underlying.sol +31 -0
  63. package/contracts/base/interface/curve/ICurveDeposit_3token.sol +25 -0
  64. package/contracts/base/interface/curve/ICurveDeposit_3token_meta.sol +20 -0
  65. package/contracts/base/interface/curve/ICurveDeposit_3token_underlying.sol +31 -0
  66. package/contracts/base/interface/curve/ICurveDeposit_4token.sol +25 -0
  67. package/contracts/base/interface/curve/ICurveDeposit_4token_meta.sol +20 -0
  68. package/contracts/base/interface/curve/ICurveDeposit_4token_underlying.sol +31 -0
  69. package/contracts/base/interface/curve/ICurveDeposit_5token.sol +25 -0
  70. package/contracts/base/interface/curve/ICurveDeposit_5token_meta.sol +20 -0
  71. package/contracts/base/interface/curve/ICurveDeposit_5token_underlying.sol +31 -0
  72. package/contracts/base/interface/curve/ICurveDeposit_6token.sol +25 -0
  73. package/contracts/base/interface/curve/ICurveDeposit_6token_meta.sol +20 -0
  74. package/contracts/base/interface/gamma/IClearing.sol +8 -0
  75. package/contracts/base/interface/gamma/IHypervisor.sol +17 -0
  76. package/contracts/base/interface/gamma/IStakingRewards.sol +35 -0
  77. package/contracts/base/interface/gamma/IUniProxy.sol +15 -0
  78. package/contracts/base/interface/kyber/IDMMExchangeRouter.sol +69 -0
  79. package/contracts/base/interface/kyber/IDMMFactory.sol +35 -0
  80. package/contracts/base/interface/kyber/IDMMLiquidityRouter.sol +204 -0
  81. package/contracts/base/interface/kyber/IDMMPool.sol +42 -0
  82. package/contracts/base/interface/kyber/IDMMRouter01.sol +12 -0
  83. package/contracts/base/interface/kyber/IDMMRouter02.sol +55 -0
  84. package/contracts/base/interface/kyber/IKyberZap.sol +7 -0
  85. package/contracts/base/interface/merkl/IDistributor.sol +6 -0
  86. package/contracts/base/interface/morpho/IMetaMorpho.sol +7 -0
  87. package/contracts/base/interface/pearl/IGauge.sol +13 -0
  88. package/contracts/base/interface/pearl/IPair.sol +44 -0
  89. package/contracts/base/interface/pearl/IRouter.sol +305 -0
  90. package/contracts/base/interface/quickswap/IDragonLair.sol +25 -0
  91. package/contracts/base/interface/quickswap/IMasterChef.sol +13 -0
  92. package/contracts/base/interface/uniswap/IUniswapV2Factory.sol +15 -0
  93. package/contracts/base/interface/uniswap/IUniswapV2Migrator.sol +6 -0
  94. package/contracts/base/interface/uniswap/IUniswapV2Pair.sol +59 -0
  95. package/contracts/base/interface/uniswap/IUniswapV2Router01.sol +96 -0
  96. package/contracts/base/interface/uniswap/IUniswapV2Router02.sol +137 -0
  97. package/contracts/base/interface/uniswap/IUniswapV3Pool.sol +24 -0
  98. package/contracts/base/interface/uniswap/IUniswapV3Router.sol +64 -0
  99. package/contracts/base/interface/uniswap/IWETH.sol +8 -0
  100. package/contracts/base/interface/uniswap/pool/IUniswapV3PoolActions.sol +103 -0
  101. package/contracts/base/interface/uniswap/pool/IUniswapV3PoolDerivedState.sol +40 -0
  102. package/contracts/base/interface/uniswap/pool/IUniswapV3PoolEvents.sol +121 -0
  103. package/contracts/base/interface/uniswap/pool/IUniswapV3PoolImmutables.sol +35 -0
  104. package/contracts/base/interface/uniswap/pool/IUniswapV3PoolOwnerActions.sol +23 -0
  105. package/contracts/base/interface/uniswap/pool/IUniswapV3PoolState.sol +116 -0
  106. package/contracts/base/masterchef-base/MasterChefHodlStrategy.sol +240 -0
  107. package/contracts/base/masterchef-base/MasterChefStrategy.sol +364 -0
  108. package/contracts/base/masterchef-base/interfaces/IMasterChef.sol +12 -0
  109. package/contracts/base/migration/vaultMigratable_2JPYv2.sol +87 -0
  110. package/contracts/base/migration/vaultMigratable_bal2EUR_PAR.sol +121 -0
  111. package/contracts/base/migration/vaultMigratable_bal2EUR_agEUR.sol +121 -0
  112. package/contracts/base/migration/vaultMigratable_balMaticX.sol +153 -0
  113. package/contracts/base/migration/vaultMigratable_balStMatic.sol +153 -0
  114. package/contracts/base/noop/NoopStrategy.sol +89 -0
  115. package/contracts/base/noop/NoopStrategyUpgradeable.sol +92 -0
  116. package/contracts/base/sushi-base/MiniChefV2Strategy.sol +380 -0
  117. package/contracts/base/sushi-base/interface/IMiniChefV2.sol +31 -0
  118. package/contracts/base/sushi-base/interface/IRewarder.sol +9 -0
  119. package/contracts/base/sushi-base/lib/BoringERC20.sol +30 -0
  120. package/contracts/base/upgradability/Address.sol +33 -0
  121. package/contracts/base/upgradability/BaseUpgradeabilityProxy.sol +61 -0
  122. package/contracts/base/upgradability/BaseUpgradeableStrategy.sol +111 -0
  123. package/contracts/base/upgradability/BaseUpgradeableStrategyStorage.sol +176 -0
  124. package/contracts/base/upgradability/BaseUpgradeableStrategyStorageV2.sol +290 -0
  125. package/contracts/base/upgradability/BaseUpgradeableStrategyV2.sol +145 -0
  126. package/contracts/base/upgradability/IUpgradable.sol +7 -0
  127. package/contracts/base/upgradability/Proxy.sol +71 -0
  128. package/contracts/base/upgradability/ReentrancyGuard.sol +57 -0
  129. package/contracts/base/upgradability/ReentrancyGuardUpgradeable.sol +51 -0
  130. package/contracts/base/upgradability/StrategyProxy.sol +35 -0
  131. package/contracts/base/wmatic/WMATIC.sol +8 -0
  132. package/contracts/strategies/aave/AaveSupplyStrategy.sol +213 -0
  133. package/contracts/strategies/aave/AaveSupplyStrategyMainnet_DAI.sol +23 -0
  134. package/contracts/strategies/aave/AaveSupplyStrategyMainnet_EURS.sol +23 -0
  135. package/contracts/strategies/aave/AaveSupplyStrategyMainnet_USDC.sol +23 -0
  136. package/contracts/strategies/aave/AaveSupplyStrategyMainnet_USDCe.sol +23 -0
  137. package/contracts/strategies/aave/AaveSupplyStrategyMainnet_USDT.sol +23 -0
  138. package/contracts/strategies/ape/ApeStrategyMainnet_BANANA_MATIC.sol +36 -0
  139. package/contracts/strategies/ape/ApeStrategyMainnet_BNB_MATIC.sol +36 -0
  140. package/contracts/strategies/ape/ApeStrategyMainnet_BTC_MATIC.sol +36 -0
  141. package/contracts/strategies/ape/ApeStrategyMainnet_DAI_MATIC.sol +36 -0
  142. package/contracts/strategies/ape/ApeStrategyMainnet_DAI_USDC.sol +37 -0
  143. package/contracts/strategies/ape/ApeStrategyMainnet_ETH_MATIC.sol +36 -0
  144. package/contracts/strategies/ape/ApeStrategyMainnet_USDT_MATIC.sol +36 -0
  145. package/contracts/strategies/aura/AuraStrategy.sol +347 -0
  146. package/contracts/strategies/aura/AuraStrategyMainnet_jEUR_PAR.sol +30 -0
  147. package/contracts/strategies/aura/interface/IAuraBaseRewardPool.sol +25 -0
  148. package/contracts/strategies/aura/interface/IAuraBooster.sol +17 -0
  149. package/contracts/strategies/aura/interface/IAuraDepositor.sol +7 -0
  150. package/contracts/strategies/balancer/BalancerStrategyV3.sol +509 -0
  151. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_2BRL.sol +39 -0
  152. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_2BRLUSD.sol +38 -0
  153. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_2EUR_PAR.sol +34 -0
  154. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_2EUR_PARv2.sol +34 -0
  155. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_2EUR_agEUR.sol +34 -0
  156. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_MATIC_USDC_ETH_BAL.sol +32 -0
  157. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_MaticX.sol +37 -0
  158. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_MaticX_amMatic.sol +38 -0
  159. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_SPHERE_MATIC.sol +34 -0
  160. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_TNGBL_USDC.sol +34 -0
  161. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_WBTC_ETH_USDC.sol +32 -0
  162. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_bbamusd.sol +36 -0
  163. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_frxETH.sol +32 -0
  164. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_frxETH_amWETH.sol +35 -0
  165. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_stETH.sol +35 -0
  166. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_stMatic.sol +36 -0
  167. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_stMatic_amMatic.sol +39 -0
  168. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_tetuBal.sol +36 -0
  169. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_wUSDR_USDC.sol +34 -0
  170. package/contracts/strategies/balancer/BalancerStrategyV3Mainnet_wstETH_amWETH.sol +37 -0
  171. package/contracts/strategies/balancer/interface/Gauge.sol +26 -0
  172. package/contracts/strategies/balancer/interface/IBVault.sol +557 -0
  173. package/contracts/strategies/balancer/interface/IBalanceMinter.sol +114 -0
  174. package/contracts/strategies/complifi/ComplifiDerivStrategy.sol +381 -0
  175. package/contracts/strategies/complifi/ComplifiDerivStrategyMainnet_ETH5x.sol +35 -0
  176. package/contracts/strategies/complifi/ComplifiStrategy.sol +362 -0
  177. package/contracts/strategies/complifi/ComplifiStrategyMainnet_COMFI_WETH.sol +34 -0
  178. package/contracts/strategies/complifi/interfaces/ILiquidityMining.sol +13 -0
  179. package/contracts/strategies/complifi/interfaces/ILiquidityPool.sol +63 -0
  180. package/contracts/strategies/complifi/interfaces/IProxyActions.sol +10 -0
  181. package/contracts/strategies/complifi/interfaces/IUSDCVault.sol +55 -0
  182. package/contracts/strategies/compound/CompoundStrategy.sol +296 -0
  183. package/contracts/strategies/compound/CompoundStrategyMainnet_USDC.sol +28 -0
  184. package/contracts/strategies/compound/CompoundStrategyMainnet_USDT.sol +28 -0
  185. package/contracts/strategies/compound-blue/CompoundBlueStrategy.sol +292 -0
  186. package/contracts/strategies/compound-blue/CompoundBlueStrategyMainnet_ETH.sol +27 -0
  187. package/contracts/strategies/compound-blue/CompoundBlueStrategyMainnet_USDC.sol +27 -0
  188. package/contracts/strategies/compound-blue/CompoundBlueStrategyMainnet_USDT.sol +27 -0
  189. package/contracts/strategies/convex/ConvexStrategyMainnet_3CRV.sol +40 -0
  190. package/contracts/strategies/convex/ConvexStrategyMainnet_3CRYPTO.sol +37 -0
  191. package/contracts/strategies/convex/ConvexStrategyMainnet_CRV_3CRYPTO copy.sol +37 -0
  192. package/contracts/strategies/convex/ConvexStrategyMainnet_MATIC_3CRYPTO.sol +37 -0
  193. package/contracts/strategies/convex/ConvexStrategyMainnet_USDR.sol +40 -0
  194. package/contracts/strategies/convex/ConvexStrategyMainnet_aCRV.sol +38 -0
  195. package/contracts/strategies/convex/base/ConvexStrategy.sol +480 -0
  196. package/contracts/strategies/convex/interface/IBaseRewardPool.sol +13 -0
  197. package/contracts/strategies/convex/interface/IBooster.sol +10 -0
  198. package/contracts/strategies/gamma-merkl/GammaMerklStrategy.sol +272 -0
  199. package/contracts/strategies/gamma-merkl/GammaMerklStrategyMainnet_QS_ETH_USDC.sol +25 -0
  200. package/contracts/strategies/gamma-merkl/GammaMerklStrategyMainnet_QS_ETH_USDT.sol +25 -0
  201. package/contracts/strategies/gamma-merkl/GammaMerklStrategyMainnet_QS_MATIC_USDT.sol +25 -0
  202. package/contracts/strategies/gamma-merkl/GammaMerklStrategyMainnet_QS_TBTC_ETH.sol +25 -0
  203. package/contracts/strategies/gamma-merkl/GammaMerklStrategyMainnet_QS_WBTC_ETH_w.sol +25 -0
  204. package/contracts/strategies/genomes/NoopStrategy_GENE_ETH.sol +23 -0
  205. package/contracts/strategies/genomes/NoopStrategy_GNOME_ETH.sol +23 -0
  206. package/contracts/strategies/idle/IdleFinanceStrategy.sol +240 -0
  207. package/contracts/strategies/idle/IdleStrategyDAIMainnet.sol +33 -0
  208. package/contracts/strategies/idle/IdleStrategyUSDCMainnet.sol +33 -0
  209. package/contracts/strategies/idle/IdleStrategyWETHMainnet.sol +30 -0
  210. package/contracts/strategies/idle/interface/IdleToken.sol +58 -0
  211. package/contracts/strategies/jarvis/JarvisHodlStrategyV3.sol +351 -0
  212. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_2CAD.sol +34 -0
  213. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_2EUR.sol +34 -0
  214. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_2EUR_EURT.sol +34 -0
  215. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_2EUR_EURe.sol +34 -0
  216. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_2EUR_PAR.sol +34 -0
  217. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_2JPY.sol +34 -0
  218. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_2JPYv2.sol +34 -0
  219. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_2NZD.sol +34 -0
  220. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_2SGD.sol +34 -0
  221. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_jCHF_USDC.sol +35 -0
  222. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_jCHF_WETH.sol +35 -0
  223. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_jEUR_USDC.sol +35 -0
  224. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_jEUR_WETH.sol +35 -0
  225. package/contracts/strategies/jarvis/JarvisHodlStrategyV3Mainnet_jGBP_USDC.sol +35 -0
  226. package/contracts/strategies/jarvis/JarvisStrategyV3.sol +281 -0
  227. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_AUR3_USDC.sol +27 -0
  228. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_AURJUL22_WETH.sol +27 -0
  229. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_DEN2_4EUR.sol +27 -0
  230. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_DEN3_4EUR.sol +27 -0
  231. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_DEN4_4EUR.sol +27 -0
  232. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_JRTANGLENOV22_2EURagEUR.sol +27 -0
  233. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_JRTANGLE_2EURagEUR.sol +27 -0
  234. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_JRTJUL22_USDC.sol +27 -0
  235. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_JRTMAY22_USDC.sol +27 -0
  236. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_JRTMIMONOV22_2EURPAR.sol +27 -0
  237. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_JRTMIMO_2EURPAR.sol +27 -0
  238. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_JRTNOV22_USDC.sol +27 -0
  239. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_JRTSEP22_USDC.sol +27 -0
  240. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_QUI_2CAD.sol +27 -0
  241. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_SES_2JPY.sol +28 -0
  242. package/contracts/strategies/jarvis/JarvisStrategyV3Mainnet_agDEN_2EUR.sol +27 -0
  243. package/contracts/strategies/jarvis/interface/IElysianFields.sol +11 -0
  244. package/contracts/strategies/jarvis/interface/IKyberFairLaunch.sol +13 -0
  245. package/contracts/strategies/jarvis/interface/IKyberRewardLocker.sol +9 -0
  246. package/contracts/strategies/meshswap/MeshswapStrategy.sol +304 -0
  247. package/contracts/strategies/meshswap/MeshswapStrategyMainnet_MESH_oMOOI.sol +30 -0
  248. package/contracts/strategies/meshswap/MeshswapStrategyMainnet_MESH_oZEMIT.sol +30 -0
  249. package/contracts/strategies/meshswap/MeshswapStrategyMainnet_USDC_oUSDC.sol +31 -0
  250. package/contracts/strategies/meshswap/MeshswapStrategyMainnet_USDT_oUSDT.sol +31 -0
  251. package/contracts/strategies/meshswap/MeshswapStrategyMainnet_WMATIC_MESH.sol +27 -0
  252. package/contracts/strategies/meshswap/MeshswapStrategyMainnet_WMATIC_USDC.sol +28 -0
  253. package/contracts/strategies/meshswap/MeshswapStrategyMainnet_WMATIC_USDT.sol +28 -0
  254. package/contracts/strategies/meshswap/interface/IExchange.sol +9 -0
  255. package/contracts/strategies/meshswap/interface/IRouter.sol +68 -0
  256. package/contracts/strategies/pearl/CaviarStrategy.sol +244 -0
  257. package/contracts/strategies/pearl/CaviarStrategyMainnet_CVR.sol +26 -0
  258. package/contracts/strategies/pearl/PearlHodlStrategy.sol +254 -0
  259. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_CVR_PEARL.sol +27 -0
  260. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_DAI_USDR.sol +27 -0
  261. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_ETH_USDR.sol +27 -0
  262. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_MATIC_USDR.sol +27 -0
  263. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_PEARL_USDR.sol +27 -0
  264. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_STAR_USDR.sol +27 -0
  265. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_TNGBL_USDR.sol +27 -0
  266. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_USDC_USDR.sol +27 -0
  267. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_USDT_USDR.sol +27 -0
  268. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_WBTC_USDR.sol +27 -0
  269. package/contracts/strategies/pearl/PearlHodlStrategyMainnet_wUSDR_USDR.sol +27 -0
  270. package/contracts/strategies/quick-gamma/QuickGammaStrategy.sol +400 -0
  271. package/contracts/strategies/quick-gamma/QuickGammaStrategyMainnet_MATIC_ETH_narrow.sol +31 -0
  272. package/contracts/strategies/quick-gamma/QuickGammaStrategyMainnet_MATIC_ETH_wide.sol +31 -0
  273. package/contracts/strategies/quick-gamma/QuickGammaStrategyMainnet_MATIC_USDC_narrow.sol +31 -0
  274. package/contracts/strategies/quick-gamma/QuickGammaStrategyMainnet_MATIC_USDC_wide.sol +31 -0
  275. package/contracts/strategies/quick-gamma/QuickGammaStrategyMainnet_USDC_ETH_narrow.sol +34 -0
  276. package/contracts/strategies/quick-gamma/QuickGammaStrategyMainnet_USDC_ETH_wide.sol +34 -0
  277. package/contracts/strategies/quick-gamma/QuickGammaStrategyV2.sol +348 -0
  278. package/contracts/strategies/quick-gamma/QuickGammaStrategyV2Mainnet_USDC_DAI.sol +28 -0
  279. package/contracts/strategies/quick-gamma/QuickGammaStrategyV2Mainnet_USDC_USDT.sol +29 -0
  280. package/contracts/strategies/quick-gamma/QuickGammaStrategyV2Mainnet_WBTC_ETH_narrow.sol +28 -0
  281. package/contracts/strategies/quick-gamma/QuickGammaStrategyV2Mainnet_WBTC_USDC_narrow.sol +28 -0
  282. package/contracts/strategies/quick-gamma/QuickGammaStrategyV2Mainnet_cbETH_ETH.sol +28 -0
  283. package/contracts/strategies/quick-gamma/QuickGammaStrategyV2Mainnet_wstETH_ETH.sol +28 -0
  284. package/contracts/strategies/uniswap-gamma/UniswapGammaStrategy.sol +312 -0
  285. package/contracts/strategies/uniswap-gamma/UniswapGammaStrategyMainnet_USDC_DAI.sol +28 -0
  286. package/contracts/strategies/uniswap-gamma/UniswapGammaStrategyMainnet_USDC_USDT.sol +28 -0
  287. package/contracts/strategies/uniswap-gamma/UniswapGammaStrategyMainnet_USDC_WETH.sol +28 -0
  288. package/contracts/strategies/uniswap-gamma/UniswapGammaStrategyMainnet_WMATIC_USDC.sol +28 -0
  289. package/contracts/strategies/yel/YelStrategy.sol +350 -0
  290. package/contracts/strategies/yel/YelStrategyMainnet_YEL_WETH.sol +29 -0
  291. package/hardhat.config.js +58 -0
  292. package/index.js +42 -0
  293. package/package.json +56 -6
  294. package/scripts/01-deploy-vault-regular-with-upgradable-strategy.js +41 -0
  295. package/scripts/02-deploy-vault-regular.js +35 -0
  296. package/scripts/03-deploy-upgradable-strategy.js +34 -0
  297. package/scripts/04-deploy-new-implementation.js +24 -0
  298. package/scripts/README.md +55 -0
  299. package/scripts/utils.js +42 -0
  300. package/test/aave/dai.js +207 -0
  301. package/test/aave/eurs.js +207 -0
  302. package/test/aave/usdc.js +206 -0
  303. package/test/aave/usdce.js +206 -0
  304. package/test/aave/usdt.js +206 -0
  305. package/test/ape/banana-matic.js +157 -0
  306. package/test/ape/bnb-matic.js +159 -0
  307. package/test/ape/btc-matic.js +159 -0
  308. package/test/ape/dai-matic.js +159 -0
  309. package/test/ape/dai-usdc.js +163 -0
  310. package/test/ape/eth-matic.js +158 -0
  311. package/test/ape/usdt-matic.js +159 -0
  312. package/test/aura/jeur-par.js +135 -0
  313. package/test/balancer/2brl_v3.js +123 -0
  314. package/test/balancer/2brlusd_v3.js +123 -0
  315. package/test/balancer/2eur_ageur.js +141 -0
  316. package/test/balancer/2eur_par.js +141 -0
  317. package/test/balancer/2eur_par_v2.js +123 -0
  318. package/test/balancer/bbamusd_v3.js +124 -0
  319. package/test/balancer/btc.js +131 -0
  320. package/test/balancer/frxETH.js +123 -0
  321. package/test/balancer/frxeth_amweth.js +123 -0
  322. package/test/balancer/matic_usdc_eth_bal.js +123 -0
  323. package/test/balancer/maticx_ammatic.js +123 -0
  324. package/test/balancer/maticx_v2.js +120 -0
  325. package/test/balancer/maticx_v3.js +141 -0
  326. package/test/balancer/polybase.js +131 -0
  327. package/test/balancer/polybase_v2.js +121 -0
  328. package/test/balancer/polydefi.js +131 -0
  329. package/test/balancer/polydefi2.js +131 -0
  330. package/test/balancer/qipool.js +136 -0
  331. package/test/balancer/sphere_matic.js +123 -0
  332. package/test/balancer/stETH.js +123 -0
  333. package/test/balancer/stable.js +131 -0
  334. package/test/balancer/stable_v2.js +121 -0
  335. package/test/balancer/stmatic_ammatic.js +123 -0
  336. package/test/balancer/stmatic_v2.js +120 -0
  337. package/test/balancer/stmatic_v3.js +141 -0
  338. package/test/balancer/tetubal_v3.js +123 -0
  339. package/test/balancer/tngbl_usdc.js +123 -0
  340. package/test/balancer/tricrypto.js +131 -0
  341. package/test/balancer/tusd_stable.js +142 -0
  342. package/test/balancer/usdc_weth.js +136 -0
  343. package/test/balancer/usdc_weth_v2.js +123 -0
  344. package/test/balancer/wbtc_eth_usdc.js +123 -0
  345. package/test/balancer/wbtc_weth.js +136 -0
  346. package/test/balancer/wsteth_amweth.js +123 -0
  347. package/test/balancer/wusdr_usdc.js +123 -0
  348. package/test/compound/usdc.js +127 -0
  349. package/test/compound/usdt.js +129 -0
  350. package/test/compound-blue/eth.js +136 -0
  351. package/test/compound-blue/usdc.js +136 -0
  352. package/test/compound-blue/usdt.js +136 -0
  353. package/test/convex/3crv.js +123 -0
  354. package/test/convex/3crypto.js +123 -0
  355. package/test/convex/acrv.js +123 -0
  356. package/test/convex/crv_3crypto.js +123 -0
  357. package/test/convex/matic_3crypto.js +123 -0
  358. package/test/convex/usdr.js +123 -0
  359. package/test/core/emission-fork.js +197 -0
  360. package/test/core/emission.js +209 -0
  361. package/test/core/vault_upgrade.js +129 -0
  362. package/test/curve/aave.js +132 -0
  363. package/test/curve/atricrypto3.js +135 -0
  364. package/test/curve/eurtusd.js +135 -0
  365. package/test/gamma-merkl/qs-eth-usdc.js +212 -0
  366. package/test/gamma-merkl/qs-eth-usdt.js +213 -0
  367. package/test/gamma-merkl/qs-matic-usdt.js +213 -0
  368. package/test/gamma-merkl/qs-tbtc-eth.js +213 -0
  369. package/test/gamma-merkl/qs-wbtc-eth-w.js +213 -0
  370. package/test/genomes/gene-eth.js +115 -0
  371. package/test/genomes/gnome-eth.js +115 -0
  372. package/test/idle/dai.js +129 -0
  373. package/test/idle/usdc.js +128 -0
  374. package/test/idle/weth.js +128 -0
  375. package/test/jarvis/2cad-hodl.js +183 -0
  376. package/test/jarvis/2cad-update-nov22.js +182 -0
  377. package/test/jarvis/2cad-update.js +177 -0
  378. package/test/jarvis/2cad-update2.js +182 -0
  379. package/test/jarvis/2cad-update3.js +182 -0
  380. package/test/jarvis/2eur-ageur-update-nov22.js +182 -0
  381. package/test/jarvis/2eur-ageur-update.js +182 -0
  382. package/test/jarvis/2eur-eure-hodl.js +176 -0
  383. package/test/jarvis/2eur-eurt-hodl.js +176 -0
  384. package/test/jarvis/2eur-eurt-update-nov22.js +182 -0
  385. package/test/jarvis/2eur-hodl.js +176 -0
  386. package/test/jarvis/2eur-par-hodl.js +176 -0
  387. package/test/jarvis/2eur-par-update-nov22.js +182 -0
  388. package/test/jarvis/2jpy-hodl.js +244 -0
  389. package/test/jarvis/2jpy-update-nov22.js +182 -0
  390. package/test/jarvis/2jpy-update.js +177 -0
  391. package/test/jarvis/2jpy-update2.js +182 -0
  392. package/test/jarvis/2jpyv2-upgrade.js +184 -0
  393. package/test/jarvis/2nzd-hodl.js +176 -0
  394. package/test/jarvis/2nzd-update.js +182 -0
  395. package/test/jarvis/2sgd-hodl.js +176 -0
  396. package/test/jarvis/2sgd-update-nov22.js +182 -0
  397. package/test/jarvis/2sgd-update.js +182 -0
  398. package/test/jarvis/2sgd-update2.js +182 -0
  399. package/test/jarvis/4eur-hodl-upgrade.js +177 -0
  400. package/test/jarvis/4eur-hodl.js +183 -0
  401. package/test/jarvis/4eur-update.js +181 -0
  402. package/test/jarvis/4eur-update2.js +181 -0
  403. package/test/jarvis/agden-2eur.js +222 -0
  404. package/test/jarvis/aur-usdc-v2.js +115 -0
  405. package/test/jarvis/aur-usdc.js +127 -0
  406. package/test/jarvis/aur3-usdc.js +115 -0
  407. package/test/jarvis/aurjul22-weth.js +222 -0
  408. package/test/jarvis/den-4eur.js +115 -0
  409. package/test/jarvis/den2-4eur.js +220 -0
  410. package/test/jarvis/den3-4eur.js +220 -0
  411. package/test/jarvis/den4-4eur.js +220 -0
  412. package/test/jarvis/jchf-usdc-hodl-v2.js +184 -0
  413. package/test/jarvis/jchf-usdc-hodl-v3.js +178 -0
  414. package/test/jarvis/jchf-usdc-hodl.js +193 -0
  415. package/test/jarvis/jchf-weth-hodl.js +176 -0
  416. package/test/jarvis/jeur-usdc-hodl-v2.js +184 -0
  417. package/test/jarvis/jeur-usdc-hodl-v3.js +178 -0
  418. package/test/jarvis/jeur-usdc-hodl.js +193 -0
  419. package/test/jarvis/jeur-weth-hodl.js +176 -0
  420. package/test/jarvis/jgbp-usdc-hodl-v2.js +184 -0
  421. package/test/jarvis/jgbp-usdc-hodl-v3.js +178 -0
  422. package/test/jarvis/jgbp-usdc-hodl.js +193 -0
  423. package/test/jarvis/jrtangle-2eurageur.js +220 -0
  424. package/test/jarvis/jrtanglenov22-2eurageur.js +220 -0
  425. package/test/jarvis/jrtjul22-usdc.js +115 -0
  426. package/test/jarvis/jrtmay22-usdc.js +115 -0
  427. package/test/jarvis/jrtmimo-2eurpar.js +220 -0
  428. package/test/jarvis/jrtmimonov22-2eurpar.js +220 -0
  429. package/test/jarvis/jrtnov22-usdc.js +220 -0
  430. package/test/jarvis/jrtsep22-usdc.js +220 -0
  431. package/test/jarvis/qui-2cad.js +218 -0
  432. package/test/jarvis/ses-2jpy.js +222 -0
  433. package/test/meshswap/mesh-omooi.js +197 -0
  434. package/test/meshswap/mesh-ozemit.js +197 -0
  435. package/test/meshswap/usdc-ousdc.js +197 -0
  436. package/test/meshswap/usdt-ousdt.js +197 -0
  437. package/test/meshswap/wmatic-mesh.js +197 -0
  438. package/test/meshswap/wmatic-usdc.js +197 -0
  439. package/test/meshswap/wmatic-usdt.js +197 -0
  440. package/test/mstable/musd.js +123 -0
  441. package/test/pearl/cvr-pearl.js +198 -0
  442. package/test/pearl/cvr.js +133 -0
  443. package/test/pearl/dai-usdr.js +198 -0
  444. package/test/pearl/eth-usdr.js +198 -0
  445. package/test/pearl/matic-usdr.js +198 -0
  446. package/test/pearl/pearl-usdr.js +198 -0
  447. package/test/pearl/star-usdr.js +186 -0
  448. package/test/pearl/tngbl-usdr.js +198 -0
  449. package/test/pearl/usdc-usdr.js +198 -0
  450. package/test/pearl/usdt-usdr.js +198 -0
  451. package/test/pearl/wbtc-usdr.js +198 -0
  452. package/test/pearl/wusdr-usdr.js +198 -0
  453. package/test/popsicle/ice-weth.js +128 -0
  454. package/test/quick/eth-matic.js +132 -0
  455. package/test/quick/eth-usdt.js +140 -0
  456. package/test/quick/ifarm-quick.js +147 -0
  457. package/test/quick/matic-usdc.js +145 -0
  458. package/test/quick/psp-matic.js +124 -0
  459. package/test/quick/wbtc-eth.js +145 -0
  460. package/test/quick-gamma/cbeth-eth.js +207 -0
  461. package/test/quick-gamma/matic-eth-narrow.js +201 -0
  462. package/test/quick-gamma/matic-eth-wide.js +197 -0
  463. package/test/quick-gamma/matic-usdc-narrow.js +197 -0
  464. package/test/quick-gamma/matic-usdc-wide.js +197 -0
  465. package/test/quick-gamma/upgrade/matic-eth-narrow.js +204 -0
  466. package/test/quick-gamma/upgrade/matic-usdc-narrow.js +199 -0
  467. package/test/quick-gamma/usdc-dai.js +209 -0
  468. package/test/quick-gamma/usdc-eth-narrow.js +197 -0
  469. package/test/quick-gamma/usdc-eth-wide.js +197 -0
  470. package/test/quick-gamma/usdc-usdt.js +209 -0
  471. package/test/quick-gamma/wbtc-eth-narrow.js +207 -0
  472. package/test/quick-gamma/wbtc-usdc-narrow.js +209 -0
  473. package/test/quick-gamma/wsteth-eth.js +207 -0
  474. package/test/sushi/eth-usdt.js +153 -0
  475. package/test/sushi/matic-eth.js +138 -0
  476. package/test/sushi/usdc-eth.js +153 -0
  477. package/test/test-config.js +24 -0
  478. package/test/uniswap-gamma/usdc-dai.js +212 -0
  479. package/test/uniswap-gamma/usdc-usdt.js +212 -0
  480. package/test/uniswap-gamma/usdc-weth.js +212 -0
  481. package/test/uniswap-gamma/wmatic-usdc.js +210 -0
  482. package/test/utilities/Utils.js +96 -0
  483. package/test/utilities/hh-utils.js +242 -0
  484. package/test/utilities/make-vault.js +10 -0
  485. package/test/yel/yel-wmatic.js +129 -0
@@ -0,0 +1,44 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity 0.6.12;
3
+
4
+ interface IPair {
5
+ function initialize(address _token0, address _token1, bool _stable) external;
6
+
7
+ function metadata() external view returns (uint256 dec0, uint256 dec1, uint256 r0, uint256 r1, bool st, address t0, address t1);
8
+
9
+ function claimFees() external returns (uint256, uint256);
10
+
11
+ function tokens() external view returns (address, address);
12
+
13
+ function token0() external view returns (address);
14
+
15
+ function token1() external view returns (address);
16
+
17
+ function transferFrom(address src, address dst, uint256 amount) external returns (bool);
18
+
19
+ function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
20
+
21
+ function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
22
+
23
+ function burn(address to) external returns (uint256 amount0, uint256 amount1);
24
+
25
+ function mint(address to) external returns (uint256 liquidity);
26
+
27
+ function getReserves() external view returns (uint256 _reserve0, uint256 _reserve1, uint256 _blockTimestampLast);
28
+
29
+ function getAmountOut(uint256, address) external view returns (uint256);
30
+
31
+ function name() external view returns (string memory);
32
+
33
+ function symbol() external view returns (string memory);
34
+
35
+ function totalSupply() external view returns (uint256);
36
+
37
+ function decimals() external view returns (uint8);
38
+
39
+ function claimable0(address _user) external view returns (uint256);
40
+
41
+ function claimable1(address _user) external view returns (uint256);
42
+
43
+ function stable() external view returns (bool);
44
+ }
@@ -0,0 +1,305 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity 0.6.12;
3
+ pragma experimental ABIEncoderV2;
4
+
5
+ interface IRouter {
6
+ struct Route {
7
+ address from;
8
+ address to;
9
+ bool stable;
10
+ }
11
+
12
+ /// @dev Struct containing information necessary to zap in and out of pools
13
+ /// @param tokenA .
14
+ /// @param tokenB .
15
+ /// @param stable Stable or volatile pool
16
+ /// @param amountOutMinA Minimum amount expected from swap leg of zap via routesA
17
+ /// @param amountOutMinB Minimum amount expected from swap leg of zap via routesB
18
+ /// @param amountAMin Minimum amount of tokenA expected from liquidity leg of zap
19
+ /// @param amountBMin Minimum amount of tokenB expected from liquidity leg of zap
20
+ struct Zap {
21
+ address tokenA;
22
+ address tokenB;
23
+ bool stable;
24
+ uint256 amountOutMinA;
25
+ uint256 amountOutMinB;
26
+ uint256 amountAMin;
27
+ uint256 amountBMin;
28
+ }
29
+
30
+ /// @notice Sort two tokens by which address value is less than the other
31
+ /// @param tokenA Address of token to sort
32
+ /// @param tokenB Address of token to sort
33
+ /// @return token0 Lower address value between tokenA and tokenB
34
+ /// @return token1 Higher address value between tokenA and tokenB
35
+ function sortTokens(address tokenA, address tokenB) external pure returns (address token0, address token1);
36
+
37
+ /// @notice Calculate the address of a pool by its' factory.
38
+ /// Used by all Router functions containing a `Route[]` or `_factory` argument.
39
+ /// Reverts if _factory is not approved by the FactoryRegistry
40
+ /// @dev Returns a randomly generated address for a nonexistent pool
41
+ /// @param tokenA Address of token to query
42
+ /// @param tokenB Address of token to query
43
+ /// @param stable True if pool is stable, false if volatile
44
+ function poolFor(
45
+ address tokenA,
46
+ address tokenB,
47
+ bool stable
48
+ ) external view returns (address pool);
49
+
50
+ /// @notice Fetch and sort the reserves for a pool
51
+ /// @param tokenA .
52
+ /// @param tokenB .
53
+ /// @param stable True if pool is stable, false if volatile
54
+ /// @return reserveA Amount of reserves of the sorted token A
55
+ /// @return reserveB Amount of reserves of the sorted token B
56
+ function getReserves(
57
+ address tokenA,
58
+ address tokenB,
59
+ bool stable
60
+ ) external view returns (uint256 reserveA, uint256 reserveB);
61
+
62
+ /// @notice Perform chained getAmountOut calculations on any number of pools
63
+ function getAmountsOut(uint256 amountIn, Route[] memory routes) external view returns (uint256[] memory amounts);
64
+
65
+ // **** ADD LIQUIDITY ****
66
+
67
+ /// @notice Quote the amount deposited into a Pool
68
+ /// @param tokenA .
69
+ /// @param tokenB .
70
+ /// @param stable True if pool is stable, false if volatile
71
+ /// @param amountADesired Amount of tokenA desired to deposit
72
+ /// @param amountBDesired Amount of tokenB desired to deposit
73
+ /// @return amountA Amount of tokenA to actually deposit
74
+ /// @return amountB Amount of tokenB to actually deposit
75
+ /// @return liquidity Amount of liquidity token returned from deposit
76
+ function quoteAddLiquidity(
77
+ address tokenA,
78
+ address tokenB,
79
+ bool stable,
80
+ uint256 amountADesired,
81
+ uint256 amountBDesired
82
+ ) external view returns (uint256 amountA, uint256 amountB, uint256 liquidity);
83
+
84
+ /// @notice Quote the amount of liquidity removed from a Pool
85
+ /// @param tokenA .
86
+ /// @param tokenB .
87
+ /// @param stable True if pool is stable, false if volatile
88
+ /// @param liquidity Amount of liquidity to remove
89
+ /// @return amountA Amount of tokenA received
90
+ /// @return amountB Amount of tokenB received
91
+ function quoteRemoveLiquidity(
92
+ address tokenA,
93
+ address tokenB,
94
+ bool stable,
95
+ uint256 liquidity
96
+ ) external view returns (uint256 amountA, uint256 amountB);
97
+
98
+ /// @notice Add liquidity of two tokens to a Pool
99
+ /// @param tokenA .
100
+ /// @param tokenB .
101
+ /// @param stable True if pool is stable, false if volatile
102
+ /// @param amountADesired Amount of tokenA desired to deposit
103
+ /// @param amountBDesired Amount of tokenB desired to deposit
104
+ /// @param amountAMin Minimum amount of tokenA to deposit
105
+ /// @param amountBMin Minimum amount of tokenB to deposit
106
+ /// @param to Recipient of liquidity token
107
+ /// @param deadline Deadline to receive liquidity
108
+ /// @return amountA Amount of tokenA to actually deposit
109
+ /// @return amountB Amount of tokenB to actually deposit
110
+ /// @return liquidity Amount of liquidity token returned from deposit
111
+ function addLiquidity(
112
+ address tokenA,
113
+ address tokenB,
114
+ bool stable,
115
+ uint256 amountADesired,
116
+ uint256 amountBDesired,
117
+ uint256 amountAMin,
118
+ uint256 amountBMin,
119
+ address to,
120
+ uint256 deadline
121
+ ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
122
+
123
+ /// @notice Add liquidity of a token and WETH (transferred as ETH) to a Pool
124
+ /// @param token .
125
+ /// @param stable True if pool is stable, false if volatile
126
+ /// @param amountTokenDesired Amount of token desired to deposit
127
+ /// @param amountTokenMin Minimum amount of token to deposit
128
+ /// @param amountETHMin Minimum amount of ETH to deposit
129
+ /// @param to Recipient of liquidity token
130
+ /// @param deadline Deadline to add liquidity
131
+ /// @return amountToken Amount of token to actually deposit
132
+ /// @return amountETH Amount of tokenETH to actually deposit
133
+ /// @return liquidity Amount of liquidity token returned from deposit
134
+ function addLiquidityETH(
135
+ address token,
136
+ bool stable,
137
+ uint256 amountTokenDesired,
138
+ uint256 amountTokenMin,
139
+ uint256 amountETHMin,
140
+ address to,
141
+ uint256 deadline
142
+ ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
143
+
144
+ // **** REMOVE LIQUIDITY ****
145
+
146
+ /// @notice Remove liquidity of two tokens from a Pool
147
+ /// @param tokenA .
148
+ /// @param tokenB .
149
+ /// @param stable True if pool is stable, false if volatile
150
+ /// @param liquidity Amount of liquidity to remove
151
+ /// @param amountAMin Minimum amount of tokenA to receive
152
+ /// @param amountBMin Minimum amount of tokenB to receive
153
+ /// @param to Recipient of tokens received
154
+ /// @param deadline Deadline to remove liquidity
155
+ /// @return amountA Amount of tokenA received
156
+ /// @return amountB Amount of tokenB received
157
+ function removeLiquidity(
158
+ address tokenA,
159
+ address tokenB,
160
+ bool stable,
161
+ uint256 liquidity,
162
+ uint256 amountAMin,
163
+ uint256 amountBMin,
164
+ address to,
165
+ uint256 deadline
166
+ ) external returns (uint256 amountA, uint256 amountB);
167
+
168
+ /// @notice Remove liquidity of a token and WETH (returned as ETH) from a Pool
169
+ /// @param token .
170
+ /// @param stable True if pool is stable, false if volatile
171
+ /// @param liquidity Amount of liquidity to remove
172
+ /// @param amountTokenMin Minimum amount of token to receive
173
+ /// @param amountETHMin Minimum amount of ETH to receive
174
+ /// @param to Recipient of liquidity token
175
+ /// @param deadline Deadline to receive liquidity
176
+ /// @return amountToken Amount of token received
177
+ /// @return amountETH Amount of ETH received
178
+ function removeLiquidityETH(
179
+ address token,
180
+ bool stable,
181
+ uint256 liquidity,
182
+ uint256 amountTokenMin,
183
+ uint256 amountETHMin,
184
+ address to,
185
+ uint256 deadline
186
+ ) external returns (uint256 amountToken, uint256 amountETH);
187
+
188
+ /// @notice Remove liquidity of a fee-on-transfer token and WETH (returned as ETH) from a Pool
189
+ /// @param token .
190
+ /// @param stable True if pool is stable, false if volatile
191
+ /// @param liquidity Amount of liquidity to remove
192
+ /// @param amountTokenMin Minimum amount of token to receive
193
+ /// @param amountETHMin Minimum amount of ETH to receive
194
+ /// @param to Recipient of liquidity token
195
+ /// @param deadline Deadline to receive liquidity
196
+ /// @return amountETH Amount of ETH received
197
+ function removeLiquidityETHSupportingFeeOnTransferTokens(
198
+ address token,
199
+ bool stable,
200
+ uint256 liquidity,
201
+ uint256 amountTokenMin,
202
+ uint256 amountETHMin,
203
+ address to,
204
+ uint256 deadline
205
+ ) external returns (uint256 amountETH);
206
+
207
+ // **** SWAP ****
208
+
209
+ /// @notice Swap one token for another
210
+ /// @param amountIn Amount of token in
211
+ /// @param amountOutMin Minimum amount of desired token received
212
+ /// @param routes Array of trade routes used in the swap
213
+ /// @param to Recipient of the tokens received
214
+ /// @param deadline Deadline to receive tokens
215
+ /// @return amounts Array of amounts returned per route
216
+ function swapExactTokensForTokens(
217
+ uint256 amountIn,
218
+ uint256 amountOutMin,
219
+ Route[] calldata routes,
220
+ address to,
221
+ uint256 deadline
222
+ ) external returns (uint256[] memory amounts);
223
+
224
+ /// @notice Swap ETH for a token
225
+ /// @param amountOutMin Minimum amount of desired token received
226
+ /// @param routes Array of trade routes used in the swap
227
+ /// @param to Recipient of the tokens received
228
+ /// @param deadline Deadline to receive tokens
229
+ /// @return amounts Array of amounts returned per route
230
+ function swapExactETHForTokens(
231
+ uint256 amountOutMin,
232
+ Route[] calldata routes,
233
+ address to,
234
+ uint256 deadline
235
+ ) external payable returns (uint256[] memory amounts);
236
+
237
+ /// @notice Swap a token for WETH (returned as ETH)
238
+ /// @param amountIn Amount of token in
239
+ /// @param amountOutMin Minimum amount of desired ETH
240
+ /// @param routes Array of trade routes used in the swap
241
+ /// @param to Recipient of the tokens received
242
+ /// @param deadline Deadline to receive tokens
243
+ /// @return amounts Array of amounts returned per route
244
+ function swapExactTokensForETH(
245
+ uint256 amountIn,
246
+ uint256 amountOutMin,
247
+ Route[] calldata routes,
248
+ address to,
249
+ uint256 deadline
250
+ ) external returns (uint256[] memory amounts);
251
+
252
+ /// @notice Swap one token for another without slippage protection
253
+ /// @return amounts Array of amounts to swap per route
254
+ /// @param routes Array of trade routes used in the swap
255
+ /// @param to Recipient of the tokens received
256
+ /// @param deadline Deadline to receive tokens
257
+ function UNSAFE_swapExactTokensForTokens(
258
+ uint256[] memory amounts,
259
+ Route[] calldata routes,
260
+ address to,
261
+ uint256 deadline
262
+ ) external returns (uint256[] memory);
263
+
264
+ // **** SWAP (supporting fee-on-transfer tokens) ****
265
+
266
+ /// @notice Swap one token for another supporting fee-on-transfer tokens
267
+ /// @param amountIn Amount of token in
268
+ /// @param amountOutMin Minimum amount of desired token received
269
+ /// @param routes Array of trade routes used in the swap
270
+ /// @param to Recipient of the tokens received
271
+ /// @param deadline Deadline to receive tokens
272
+ function swapExactTokensForTokensSupportingFeeOnTransferTokens(
273
+ uint256 amountIn,
274
+ uint256 amountOutMin,
275
+ Route[] calldata routes,
276
+ address to,
277
+ uint256 deadline
278
+ ) external;
279
+
280
+ /// @notice Swap ETH for a token supporting fee-on-transfer tokens
281
+ /// @param amountOutMin Minimum amount of desired token received
282
+ /// @param routes Array of trade routes used in the swap
283
+ /// @param to Recipient of the tokens received
284
+ /// @param deadline Deadline to receive tokens
285
+ function swapExactETHForTokensSupportingFeeOnTransferTokens(
286
+ uint256 amountOutMin,
287
+ Route[] calldata routes,
288
+ address to,
289
+ uint256 deadline
290
+ ) external payable;
291
+
292
+ /// @notice Swap a token for WETH (returned as ETH) supporting fee-on-transfer tokens
293
+ /// @param amountIn Amount of token in
294
+ /// @param amountOutMin Minimum amount of desired ETH
295
+ /// @param routes Array of trade routes used in the swap
296
+ /// @param to Recipient of the tokens received
297
+ /// @param deadline Deadline to receive tokens
298
+ function swapExactTokensForETHSupportingFeeOnTransferTokens(
299
+ uint256 amountIn,
300
+ uint256 amountOutMin,
301
+ Route[] calldata routes,
302
+ address to,
303
+ uint256 deadline
304
+ ) external;
305
+ }
@@ -0,0 +1,25 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity 0.6.12;
4
+
5
+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
6
+
7
+ interface IDragonLair {
8
+
9
+ function quick() external view returns (IERC20);
10
+
11
+ // Enter the lair. Pay some QUICK. Earn some dragon QUICK.
12
+ function enter(uint256 _quickAmount) external;
13
+
14
+ // Leave the lair. Claim back your QUICK.
15
+ function leave(uint256 _dQuickAmount) external;
16
+
17
+ // returns the total amount of QUICK an address has in the contract including fees earned
18
+ function QUICKBalance(address _account) external view returns (uint256 quickAmount_);
19
+
20
+ //returns how much QUICK someone gets for depositing dQUICK
21
+ function dQUICKForQUICK(uint256 _dQuickAmount) external view returns (uint256 quickAmount_);
22
+
23
+ //returns how much dQUICK someone gets for depositing QUICK
24
+ function QUICKForDQUICK(uint256 _quickAmount) external view returns (uint256 dQuickAmount_);
25
+ }
@@ -0,0 +1,13 @@
1
+ //SPDX-License-Identifier: Unlicense
2
+
3
+ pragma solidity 0.6.12;
4
+
5
+ interface IMasterChef {
6
+ function deposit(uint256 _pid, uint256 _amount, address _to) external;
7
+ function withdraw(uint256 _pid, uint256 _amount, address _to) external;
8
+ function emergencyWithdraw(uint256 _pid, address _to) external;
9
+ function userInfo(uint256 _pid, address _user) external view returns (uint256, uint256);
10
+ function lpToken(uint256 _pid) external view returns(address);
11
+ function poolInfo(uint256 _pid) external view returns (uint256, uint256, uint256);
12
+ function harvest(uint256 _pid, address _to) external;
13
+ }
@@ -0,0 +1,15 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.5.0;
3
+
4
+ interface IUniswapV2Factory {
5
+ event PairCreated(address indexed token0, address indexed token1, address pair, uint);
6
+
7
+ function getPair(address tokenA, address tokenB) external view returns (address pair);
8
+ function allPairs(uint) external view returns (address pair);
9
+ function allPairsLength() external view returns (uint);
10
+
11
+ function feeTo() external view returns (address);
12
+ function feeToSetter() external view returns (address);
13
+
14
+ function createPair(address tokenA, address tokenB) external returns (address pair);
15
+ }
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.5.0;
3
+
4
+ interface IUniswapV2Migrator {
5
+ function migrate(address token, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external;
6
+ }
@@ -0,0 +1,59 @@
1
+ // SPDX-License-Identifier: MIT
2
+ /**
3
+ *Submitted for verification at Etherscan.io on 2020-05-05
4
+ */
5
+
6
+ // File: contracts/interfaces/IUniswapV2Pair.sol
7
+
8
+ pragma solidity >=0.5.0;
9
+
10
+ interface IUniswapV2Pair {
11
+ event Approval(address indexed owner, address indexed spender, uint value);
12
+ event Transfer(address indexed from, address indexed to, uint value);
13
+
14
+ function name() external pure returns (string memory);
15
+ function symbol() external pure returns (string memory);
16
+ function decimals() external pure returns (uint8);
17
+ function totalSupply() external view returns (uint);
18
+ function balanceOf(address owner) external view returns (uint);
19
+ function allowance(address owner, address spender) external view returns (uint);
20
+
21
+ function approve(address spender, uint value) external returns (bool);
22
+ function transfer(address to, uint value) external returns (bool);
23
+ function transferFrom(address from, address to, uint value) external returns (bool);
24
+
25
+ function DOMAIN_SEPARATOR() external view returns (bytes32);
26
+ function PERMIT_TYPEHASH() external pure returns (bytes32);
27
+ function nonces(address owner) external view returns (uint);
28
+
29
+ function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
30
+
31
+ event Mint(address indexed sender, uint amount0, uint amount1);
32
+ event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
33
+ event Swap(
34
+ address indexed sender,
35
+ uint amount0In,
36
+ uint amount1In,
37
+ uint amount0Out,
38
+ uint amount1Out,
39
+ address indexed to
40
+ );
41
+ event Sync(uint112 reserve0, uint112 reserve1);
42
+
43
+ function MINIMUM_LIQUIDITY() external pure returns (uint);
44
+ function factory() external view returns (address);
45
+ function token0() external view returns (address);
46
+ function token1() external view returns (address);
47
+ function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
48
+ function price0CumulativeLast() external view returns (uint);
49
+ function price1CumulativeLast() external view returns (uint);
50
+ function kLast() external view returns (uint);
51
+
52
+ function mint(address to) external returns (uint liquidity);
53
+ function burn(address to) external returns (uint amount0, uint amount1);
54
+ function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
55
+ function skim(address to) external;
56
+ function sync() external;
57
+
58
+ function initialize(address, address) external;
59
+ }
@@ -0,0 +1,96 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.5.0;
3
+
4
+ interface IUniswapV2Router01 {
5
+ function factory() external pure returns (address);
6
+ function WETH() external pure returns (address);
7
+
8
+ function addLiquidity(
9
+ address tokenA,
10
+ address tokenB,
11
+ uint amountADesired,
12
+ uint amountBDesired,
13
+ uint amountAMin,
14
+ uint amountBMin,
15
+ address to,
16
+ uint deadline
17
+ ) external returns (uint amountA, uint amountB, uint liquidity);
18
+ function addLiquidityETH(
19
+ address token,
20
+ uint amountTokenDesired,
21
+ uint amountTokenMin,
22
+ uint amountETHMin,
23
+ address to,
24
+ uint deadline
25
+ ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
26
+ function removeLiquidity(
27
+ address tokenA,
28
+ address tokenB,
29
+ uint liquidity,
30
+ uint amountAMin,
31
+ uint amountBMin,
32
+ address to,
33
+ uint deadline
34
+ ) external returns (uint amountA, uint amountB);
35
+ function removeLiquidityETH(
36
+ address token,
37
+ uint liquidity,
38
+ uint amountTokenMin,
39
+ uint amountETHMin,
40
+ address to,
41
+ uint deadline
42
+ ) external returns (uint amountToken, uint amountETH);
43
+ function removeLiquidityWithPermit(
44
+ address tokenA,
45
+ address tokenB,
46
+ uint liquidity,
47
+ uint amountAMin,
48
+ uint amountBMin,
49
+ address to,
50
+ uint deadline,
51
+ bool approveMax, uint8 v, bytes32 r, bytes32 s
52
+ ) external returns (uint amountA, uint amountB);
53
+ function removeLiquidityETHWithPermit(
54
+ address token,
55
+ uint liquidity,
56
+ uint amountTokenMin,
57
+ uint amountETHMin,
58
+ address to,
59
+ uint deadline,
60
+ bool approveMax, uint8 v, bytes32 r, bytes32 s
61
+ ) external returns (uint amountToken, uint amountETH);
62
+ function swapExactTokensForTokens(
63
+ uint amountIn,
64
+ uint amountOutMin,
65
+ address[] calldata path,
66
+ address to,
67
+ uint deadline
68
+ ) external returns (uint[] memory amounts);
69
+ function swapTokensForExactTokens(
70
+ uint amountOut,
71
+ uint amountInMax,
72
+ address[] calldata path,
73
+ address to,
74
+ uint deadline
75
+ ) external returns (uint[] memory amounts);
76
+ function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
77
+ external
78
+ payable
79
+ returns (uint[] memory amounts);
80
+ function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
81
+ external
82
+ returns (uint[] memory amounts);
83
+ function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
84
+ external
85
+ returns (uint[] memory amounts);
86
+ function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
87
+ external
88
+ payable
89
+ returns (uint[] memory amounts);
90
+
91
+ function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
92
+ function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
93
+ function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
94
+ function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
95
+ function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
96
+ }