UniversalRouter
This contract is KLAYswap router using V2 and V3 pools. This contract can aggregate trades across V2 and V3 pools to give users access highly-flexible and personalised transactions.
Code
Github Link: (Will be updated after official launch)
Address
Events, Read-Only Functions, and State-Changing Functions
Parameter Structs
SwapParams
struct SwapParams {
    address to;
    address[] path;
    address[] pool;
    uint deadline;
}Parameters:
to
address
Address to receive tokens after swap
path
address[]
Swap paths (token address list)
pool
address[]
Pool paths in swap (list of pool addresses)
When using v2 pool: address(0) 
When using v3 pool: v3 pool address
deadline
uint256
deadline
Read-Only Functions
getAmountsOut
function getAmountsOut(
    uint256 amountIn, 
    address[] memory path, 
    address[] memory pool
) public view returns (
    uint256[] memory amounts
)Parameters:
amountIn
uint256
The amount of first token required to be paid
path
address[]
The path of the swap (list of token addresses)
pool
address[]
The pool path of the swap (list of pool addresses)
When using v2 pool : address(0)
When using v3 pool : address of v3 pool
Return Values:
amounts
uint256[]
The input token amount and all subsequent output token amounts.
getAmountsIn
function getAmountsIn(
    uint256 amountOut, 
    address[] memory path, 
    address[] memory pool
) public view returns (
    uint256[] memory amounts
)Parameters:
amountOut
uint256
The amount of the last token that would be received
path
address[]
The token path of the swap (list of token addresses)
pool
address[]
The pool path of the swap (list of pool addresses)
When using v2 pool : address(0)
When using v3 pool : address of v3 pool
Return Values:
amounts
uint256[]
The input token amount and all subsequent output token amounts.
State-Changing Functions
swapExactTokensForTokens
function swapExactTokensForTokens(
    uint256 amountIn, 
    uint256 amountOutMin, 
    struct SwapParams calldata p
) external returns (uint256[] memory amounts)Swaps an exact amount of input tokens for as many output tokens as possible, along the route determined by the path.
Parameters:
amountIn
uint256
The amount of input tokens to paid
amountOutMin
uint256
The minimum amount of output tokens that must be received for the transaction not to revert
p
struct SwapParams 
struct SwapParams for swap
Return Values:
amounts
uint256[]
The input token amount and all subsequent output token amounts.
swapTokensForExactTokens
function swapTokensForExactTokens(
    uint256 amountOut, 
    uint256 amountInMax, 
    struct SwapParams calldata p
) external returns (uint256[] memory amounts)Receive an exact amount of output tokens for as few input tokens as possible, along the route determined by the path.
Parameters:
amountOut
uint256
The amount of output tokens to receive
amountInMax
uint256
The maximum amount of input tokens that can be required before the transaction reverts
p
struct SwapParams 
struct SwapParams for swap
Return Values:
amounts
uint256[]
The input token amount and all subsequent output token amounts.
swapExactETHForTokens
function swapExactETHForTokens(
    uint256 amountOutMin, 
    struct SwapParams calldata p
) external payable returns (uint256[] memory amounts)Swaps an exact amount of ETH for as many output tokens as possible, along the route determined by the path
Parameters:
msg.value
uint256
The amount of ETH to be paid
amountOutMin
uint256
The minimum amount of output tokens that must be received for the transaction not to revert
p
struct SwapParams 
struct SwapParams for swap
Return Values:
amounts
uint256[]
The input token amount and all subsequent output token amounts.
swapTokensForExactETH
function swapTokensForExactETH(
    uint256 amountOut, 
    uint256 amountInMax, 
    struct SwapParams calldata p
) external returns (uint256[] memory amounts)Receive an exact amount of ETH for as few input tokens as possible, along the route determined by the path.
Parameters:
amountOut
uint256
The amount of ETH to receive
amountInMax
uint256
The maximum amount of input tokens that can be required before the transaction reverts
p
struct SwapParams 
struct SwapParams for swap
Return Values:
amounts
uint256[]
The input token amount and all subsequent output token amounts.
swapExactTokensForETH
function swapExactTokensForETH(
    uint256 amountIn, 
    uint256 amountOutMin, 
    struct SwapParams calldata p
) external returns (uint256[] memory amounts)Swaps an exact amount of tokens for as much ETH as possible, along the route determined by the path.
Parameters:
amountIn
uint256
The amount of input tokens to be paid
amountOutMin
uint256
The minimum amount of output tokens that must be received for the transaction not to revert
p
struct SwapParams 
struct SwapParams for swap
Return Values:
amounts
uint256[]
The input token amount and all subsequent output token amounts.
swapETHForExactTokens
function swapETHForExactTokens(
    uint256 amountOut,
    struct SwapParams calldata p
) external payable returns (uint256[] memory amounts)Swaps an exact amount of tokens for as much ETH as possible, along the route determined by the path.
Parameters:
amountOut
uint256
The amount of tokens to receive
msg.value (amountInMax)
uint256
The maximum amount of ETH that can be required before the transaction revert
p
struct SwapParams 
struct SwapParams for swap
Return Values:
amounts
uint256[]
The input token amount and all subsequent output token amounts.