> Uniswap SDK Integration Guide

terminal — swap, pool, liquidity

Integrate Uniswap V3/V4 into your dApp. Covers swap, add liquidity, remove liquidity, and SDK setup. All examples use the @uniswap/v3-sdk and @uniswap/sdk-core packages.

Install SDK

npm install @uniswap/v3-sdk @uniswap/sdk-core @uniswap/v3-periphery ethers
# or
yarn add @uniswap/v3-sdk @uniswap/sdk-core @uniswap/v3-periphery ethers

Initialize client

import { ethers } from "ethers";
import { Token, CurrencyAmount, Percent } from "@uniswap/sdk-core";
import { Pool } from "@uniswap/v3-sdk";
import IUniswapV3PoolABI from "@uniswap/v3-core/artifacts/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json";

const provider = new ethers.JsonRpcProvider("https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY");
const signer = new ethers.Wallet("PRIVATE_KEY", provider);

Get quote

import { SwapQuoter } from "@uniswap/v3-sdk";
import { Quoter } from "@uniswap/v3-periphery";

const quoterAddress = "0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6";
const quoter = new ethers.Contract(quoterAddress, Quoter.ABI, provider);

const quote = await quoter.quoteExactInputSingle.staticCall(
  tokenIn,
  tokenOut,
  fee,
  amountIn,
  0
);

Execute swap

import { SwapRouter } from "@uniswap/v3-periphery";
import { Trade, Route, SwapType } from "@uniswap/v3-sdk";

const swapRouter = new ethers.Contract(
  "0xE592427A0AEce92De3Edee1F18E0157C05861564",
  SwapRouter.ABI,
  signer
);

const tx = await swapRouter.exactInputSingle({
  tokenIn,
  tokenOut,
  fee,
  recipient: userAddress,
  deadline: Math.floor(Date.now() / 1000) + 60 * 20,
  amountIn,
  amountOutMinimum: 0,
  sqrtPriceLimitX96: 0,
});

Add liquidity

import { NonfungiblePositionManager } from "@uniswap/v3-periphery";
import { Position, nearestUsableTick } from "@uniswap/v3-sdk";

const position = new Position({
  pool,
  tickLower: nearestUsableTick(pool.tickCurrent, tickSpacing) - tickSpacing * 2,
  tickUpper: nearestUsableTick(pool.tickCurrent, tickSpacing) + tickSpacing * 2,
  liquidity: amount.mul(1000),
});

const tx = await NonfungiblePositionManager.addCallParameters(position, {
  slippageTolerance: new Percent(5, 100),
  recipient: userAddress,
  deadline: Math.floor(Date.now() / 1000) + 60 * 20,
});

Remove liquidity

const { calldata, value } = NonfungiblePositionManager.removeCallParameters(
  position,
  {
    tokenId,
    liquidityPercentage: new Percent(100),
    slippageTolerance: new Percent(5, 100),
    deadline: Math.floor(Date.now() / 1000) + 60 * 20,
    collectOptions: {
      expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(token0, 0),
      expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(token1, 0),
      recipient: userAddress,
    },
  }
);

Read pool state

const poolContract = new ethers.Contract(poolAddress, IUniswapV3PoolABI.abi, provider);

// slot0 — sqrtPriceX96, tick, observationIndex, observationCardinality
const slot0 = await poolContract.slot0();
console.log("Tick:", slot0.tick.toString());
console.log("SqrtPriceX96:", slot0.sqrtPriceX96.toString());

// observations — TWAP
const obs = await poolContract.observations(slot0.observationIndex);
console.log("Observation timestamp:", obs.blockTimestamp.toString());

What you get

PDF with complete TypeScript examples for each operation above, including error handling, gas estimation, and multi-hop swap routing. Covers V3 and V4 alpha patterns.

Payment

Send exactly $1 in ETH or USDC (ERC-20) to:

0x0D42B32D6E21F496082104BFC8d7213081474577

After payment, email receipts@wontwork.dev with tx hash to get the PDF. PDF delivered within 24h.


Prompt Pack One Bash Aliases Pack Tailwind Components Pack Base64 Tool Nuke Cache Thing Namer Rust for Web3 Foundry Cheatsheet PredMark Calc Stock Tools Solidity Snippets Contract Audit Checklist MetaMask Security Guide OpenZeppelin Cookbook Hardhat Debug Guide Gas Optimization Patterns Web3.py Quick Reference Uniswap SDK Integration Guide Chainlink Price Feed Guide IPFS File Upload

Ecosystem