Skip to main content
TVL: ~$10M | Type: Concentrated Liquidity (V3) | Docs: docs.uniswap.org

Overview

Uniswap V3 is the largest DEX by TVL on Monad Mainnet. It uses concentrated liquidity - LPs provide liquidity within custom price ranges, dramatically improving capital efficiency compared to V2-style constant-product AMMs. The SDK exposes pool enumeration, price queries, and a cross-DEX price comparison utility against Kuru.
Uniswap V3’s QuoterV2 contract is not a true view function. The SDK uses simulateContract (not readContract) for all quote calls. Using readContract will fail on Monad’s RPC.

Functions

getUniswapPools()

Returns all active Uniswap V3 pools on Monad. Returns
FieldTypeDescription
poolAddressAddressPool contract address
token0AddressFirst token address
token1AddressSecond token address
feenumberFee tier in bps (e.g. 500, 3000, 10000)
sqrtPriceX96bigintCurrent sqrt price in Q64.96 format
liquiditybigintActive liquidity in the pool
ticknumberCurrent tick
import { getUniswapPools } from 'rampart-monad'

const pools = await getUniswapPools()
for (const pool of pools) {
  console.log(`${pool.token0}/${pool.token1} - fee: ${pool.fee / 10000}%`)
}

getUniswapPrice()

Returns the current spot price between two tokens using the best Uniswap V3 pool. Parameters
NameTypeDescription
tokenAAddressInput token address
tokenBAddressOutput token address
Returns number. price of tokenA denominated in tokenB.
import { getUniswapPrice } from 'rampart-monad'

const price = await getUniswapPrice(
  '0x...', // MON
  '0x...'  // USDC
)
console.log(`1 MON = ${price} USDC`)

compareWithKuru()

Compares the effective swap price between Uniswap V3 and Kuru for a given token pair and input amount. Useful for arbitrage detection and best-execution routing. Parameters
NameTypeDescription
tokenAAddressInput token address
tokenBAddressOutput token address
amountbigintInput amount in token decimals
Returns
FieldTypeDescription
uniswapPricenumberEffective price on Uniswap V3
kuruPricenumberEffective price on Kuru
bestSourcestring"uniswap" or "kuru"
spreadBpsnumberPrice difference in basis points
import { compareWithKuru } from 'rampart-monad'

const cmp = await compareWithKuru(
  '0x...', // tokenA
  '0x...', // tokenB
  1_000_000_000_000_000_000n // 1 token (18 decimals)
)

if (cmp.bestSource === 'kuru') {
  console.log(`Kuru is better by ${cmp.spreadBps} bps`)
} else {
  console.log(`Uniswap is better by ${cmp.spreadBps} bps`)
}

Contract Addresses

ContractAddress
Factory V30x1F98431c8aD98523631AE4a59f267346ea31F984
QuoterV20x61fFE014bA17989E743c5F6cB21bF9697530B21e
SwapRouter020x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
NonfungiblePositionManager0xC36442b4a4522E871399CD717aBDD847Ab11FE88