Calc.sol 1.2 KB

1234567891011121314151617181920212223242526272829
  1. //SPDX-License-Identifier: Unlicense
  2. pragma solidity ^0.7.6;
  3. import '@uniswap/v3-periphery/contracts/libraries/OracleLibrary.sol';
  4. import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol';
  5. import 'hardhat/console.sol';
  6. contract Calc {
  7. IUniswapV3Factory factory = IUniswapV3Factory(0x1F98431c8aD98523631AE4a59f267346ea31F984);
  8. function getQuote(address tokenA, uint amountA, address tokenB, uint24 fee) public view returns (uint256 amountB) {
  9. (int24 tick,) = OracleLibrary.consult(factory.getPool(tokenA, tokenB, fee), 60);
  10. return OracleLibrary.getQuoteAtTick(tick, uint128(amountA), tokenA, tokenB);
  11. }
  12. function getQuoteHandleFee(address tokenA, uint amountA, address tokenB, uint24 fee) public view returns (uint256 amountB) {
  13. (int24 tick,) = OracleLibrary.consult(factory.getPool(tokenA, tokenB, fee), 60);
  14. return OracleLibrary.getQuoteAtTick(tick, uint128(amountA) * (1_000_000 - fee) / 1_000_000, tokenA, tokenB);
  15. }
  16. function calc1(uint num1, uint24 fee) public pure returns (uint256 rst1) {
  17. return num1 * (1_000_000 - fee);
  18. }
  19. function calc2(uint num2, uint24 fee) public pure returns (uint256 rst2) {
  20. return num2 * (1_000_000 - fee) / 1_000_000;
  21. }
  22. }