91342
For the current execution configuration, call GET /v1/config. The JSON deployment manifest in this repository is the source of truth for these testnet addresses.
Contracts
| Contract | Address | Use |
|---|---|---|
| TopokkiV2Factory | 0xc101eb8fdedd58098d84ec5c90ade42299ce3ab9 | Creates V2 pairs. |
| TopokkiV2Router02 | 0xdaf3fd5919c7f2910832bfdba0384167946edabb | Direct V2 swaps and liquidity. |
| TopokkiV3Factory | 0x0b59c9c8c1b1f6d66f9abc62150276a83145b248 | Creates V3 pools. |
| TopokkiPositionManager | 0x1fda514e4d5cdc544068208ea8ec3831e527f65f | V3 liquidity positions. |
| TopokkiQuoterV2 | 0x0aff314f898884c9ba81e4dcbf99f3e9d60ffd8f | V3 quote simulation. |
| TopokkiUniversalRouter | 0xc4a0afb2436792e11d7892c107482f8e8e65c4cd | Smart-order-routed swaps. |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 | Token permissions for Universal Router swaps. |
| WETH9 | 0x4200000000000000000000000000000000000006 | Wrapped ETH. |
Copyable Viem ABIs
The following ABI definitions are embedded here so you can copy them directly into a Viem integration. They cover Topokki’s public integration surfaces.V2 Router
import { parseAbi } from 'viem'
export const v2RouterAbi = parseAbi([
'function factory() view returns (address)',
'function WETH() view returns (address)',
'function getAmountsOut(uint256 amountIn, address[] path) view returns (uint256[] amounts)',
'function getAmountsIn(uint256 amountOut, address[] path) view returns (uint256[] amounts)',
'function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB, uint256 liquidity)',
'function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity)',
'function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB)',
'function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns (uint256 amountToken, uint256 amountETH)',
'function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns (uint256[] amounts)',
'function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns (uint256[] amounts)',
'function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns (uint256[] amounts)',
'function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns (uint256[] amounts)',
'function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns (uint256[] amounts)',
])
Universal Router
import { parseAbi } from 'viem'
export const universalRouterAbi = parseAbi([
'function PERMIT2() view returns (address)',
'function WETH9() view returns (address)',
'function TOPOKKI_V2_FACTORY() view returns (address)',
'function TOPOKKI_V3_FACTORY() view returns (address)',
'function execute(bytes commands, bytes[] inputs) payable',
'function execute(bytes commands, bytes[] inputs, uint256 deadline) payable',
])
V3 Factory and Position Manager
import { parseAbi } from 'viem'
export const v3FactoryAbi = parseAbi([
'function owner() view returns (address)',
'function getPool(address tokenA, address tokenB, uint24 fee) view returns (address)',
'function feeAmountTickSpacing(uint24 fee) view returns (int24)',
'function createPool(address tokenA, address tokenB, uint24 fee) returns (address pool)',
])
export const positionManagerAbi = parseAbi([
'function factory() view returns (address)',
'function WETH9() view returns (address)',
'function ownerOf(uint256 tokenId) view returns (address)',
'function mint((address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint256 amount0Desired, uint256 amount1Desired, uint256 amount0Min, uint256 amount1Min, address recipient, uint256 deadline) params) payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)',
'function increaseLiquidity((uint256 tokenId, uint256 amount0Desired, uint256 amount1Desired, uint256 amount0Min, uint256 amount1Min, uint256 deadline) params) payable returns (uint128 liquidity, uint256 amount0, uint256 amount1)',
'function decreaseLiquidity((uint256 tokenId, uint128 liquidity, uint256 amount0Min, uint256 amount1Min, uint256 deadline) params) payable returns (uint256 amount0, uint256 amount1)',
'function collect((uint256 tokenId, address recipient, uint128 amount0Max, uint128 amount1Max) params) payable returns (uint256 amount0, uint256 amount1)',
'function burn(uint256 tokenId) payable',
])
V3 Quoter
import { parseAbi } from 'viem'
export const quoterV2Abi = parseAbi([
'function factory() view returns (address)',
'function WETH9() view returns (address)',
'function quoteExactInput(bytes path, uint256 amountIn) returns (uint256 amountOut, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)',
'function quoteExactOutput(bytes path, uint256 amountOut) returns (uint256 amountIn, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)',
'function quoteExactInputSingle((address tokenIn, address tokenOut, uint256 amountIn, uint24 fee, uint160 sqrtPriceLimitX96) params) returns (uint256 amountOut, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)',
'function quoteExactOutputSingle((address tokenIn, address tokenOut, uint256 amount, uint24 fee, uint160 sqrtPriceLimitX96) params) returns (uint256 amountIn, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)',
])
The V3 Quoter simulates trades and is for read/estimate flows. It is not the contract to send a swap transaction to.
Test assets
| Token | Decimals | Address |
|---|---|---|
| USDC | 6 | 0x6b35178c07620365b05fe7c5b01c4f0c0e6dc62c |
| USDT | 6 | 0x2332873f45e22db8388445c66d7783eb8f3b198b |
| WBTC | 8 | 0x8733dc4e5067c63838ee3963d36b29dcacf0ff79 |
| TTEST | 18 | 0x01a24d6f238c29d4bebc2ac40f56723f4f8e83d2 |
These are testnet contracts and test tokens. Verify the chain ID and deployment configuration before submitting transactions.