Trading Post
  • General Information
    • Trading Post Intro
    • Why Trading Post?
  • PRODUCTS
    • Exchange
      • Token Swaps
      • Fees and Routes
      • Liquidity Pools
      • StableSwap
      • Limit Orders and TWAP
      • Smart Router
    • Yield Farming
    • veTP
      • What is veTP?
      • How to get veTP?
      • Gauges Voting
  • FAQ
    • General FAQ
  • Developer
    • Smart Contracts
    • Trading Post V3
      • Addresses
      • Technical Overview
        • TradingPostV3Factory
        • TradingPostV3Pool
        • NonfungiblePositionManager
        • SmartRouter
    • Trading Post V2
      • FactoryV2
      • RouterV2
    • API
  • Integration
    • Token Whitelist & Integration Guide for Partners
    • Integrating Trading Post Router / Swaps
  • LEGAL
    • Terms of Use
    • Privacy Policy
Powered by GitBook
On this page
  • V3SwapRouter
  • Solidity API
  • SwapCallbackData
  • pancakeV3SwapCallback
  • exactInputSingle
  • exactInput
  • exactOutputSingle
  • exactOutput
  • V2SwapRouter
  • Solidty API
  • swapExactTokensForTokens
  • swapTokensForExactTokens
  • StableSwapRouter
  • Solidity API
  • stableSwapFactory
  • stableSwapInfo
  • SetStableSwap
  • constructor
  • setStableSwap
  • exactInputStableSwap
  • exactOutputStableSwap
Export as PDF
  1. Developer
  2. Trading Post V3
  3. Technical Overview

SmartRouter

V3SwapRouter

Solidity API

SwapCallbackData

struct SwapCallbackData {
bytes path;
address payer;
}

pancakeV3SwapCallback

function pancakeV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes _data) external

Called to msg.sender after executing a swap via ITradingPostV3Pool#swap.

In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a TradingPostV3Pool deployed by the canonical TradingPostV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.

Parameters

Name
Type
Description

amount0Delta

int256

The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.

amount1Delta

int256

The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.

_data

bytes

exactInputSingle

function exactInputSingle(struct IV3SwapRouter.ExactInputSingleParams params) external payable returns (uint256 amountOut)

Swaps amountIn of one token for as much as possible of another token

Setting amountIn to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.

Parameters

Name
Type
Description

params

struct IV3SwapRouter.ExactInputSingleParams

The parameters necessary for the swap, encoded as ExactInputSingleParams in calldata

Return Values

Name
Type
Description

amountOut

uint256

The amount of the received token

exactInput

function exactInput(struct IV3SwapRouter.ExactInputParams params) external payable returns (uint256 amountOut)

Swaps amountIn of one token for as much as possible of another along the specified path

Setting amountIn to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.

Parameters

Name
Type
Description

params

struct IV3SwapRouter.ExactInputParams

The parameters necessary for the multi-hop swap, encoded as ExactInputParams in calldata

Return Values

Name
Type
Description

amountOut

uint256

The amount of the received token

exactOutputSingle

function exactOutputSingle(struct IV3SwapRouter.ExactOutputSingleParams params) external payable returns (uint256 amountIn)

Swaps as little as possible of one token for amountOut of another token that may remain in the router after the swap.

Parameters

Name
Type
Description

params

struct IV3SwapRouter.ExactOutputSingleParams

The parameters necessary for the swap, encoded as ExactOutputSingleParams in calldata

Return Values

Name
Type
Description

amountIn

uint256

The amount of the input token

exactOutput

function exactOutput(struct IV3SwapRouter.ExactOutputParams params) external payable returns (uint256 amountIn)

Swaps as little as possible of one token for amountOut of another along the specified path (reversed) that may remain in the router after the swap.

Parameters

Name
Type
Description

params

struct IV3SwapRouter.ExactOutputParams

The parameters necessary for the multi-hop swap, encoded as ExactOutputParams in calldata

Return Values

Name
Type
Description

amountIn

uint256

The amount of the input token

V2SwapRouter

Solidty API

swapExactTokensForTokens

function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to) external payable returns (uint256 amountOut)

Swaps amountIn of one token for as much as possible of another token

Setting amountIn to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.

Parameters

Name
Type
Description

amountIn

uint256

The amount of token to swap

amountOutMin

uint256

The minimum amount of output that must be received

path

address[]

The ordered list of tokens to swap through

to

address

The recipient address

Return Values

Name
Type
Description

amountOut

uint256

The amount of the received token

swapTokensForExactTokens

function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to) external payable returns (uint256 amountIn)

Swaps as little as possible of one token for an exact amount of another token

Parameters

Name
Type
Description

amountOut

uint256

The amount of token to swap for

amountInMax

uint256

The maximum amount of input that the caller will pay

path

address[]

The ordered list of tokens to swap through

to

address

The recipient address

Return Values

Name
Type
Description

amountIn

uint256

The amount of token to pay

StableSwapRouter

Solidity API

stableSwapFactory

address stableSwapFactory

stableSwapInfo

address stableSwapInfo

SetStableSwap

event SetStableSwap(address factory, address info)

constructor

constructor(address _stableSwapFactory, address _stableSwapInfo) internal

setStableSwap

function setStableSwap(address _factory, address _info) external

Set Trading Post Stable Swap Factory and Info

Only callable by contract owner

exactInputStableSwap

function exactInputStableSwap(address[] path, uint256[] flag, uint256 amountIn, uint256 amountOutMin, address to) external payable returns (uint256 amountOut)

Parameters

Name
Type
Description

path

address[]

flag

uint256[]

token amount in a stable swap pool. 2 for 2pool, 3 for 3pool

amountIn

uint256

amountOutMin

uint256

to

address

exactOutputStableSwap

function exactOutputStableSwap(address[] path, uint256[] flag, uint256 amountOut, uint256 amountInMax, address to) external payable returns (uint256 amountIn)

Parameters

Name
Type
Description

path

address[]

flag

uint256[]

token amount in a stable swap pool. 2 for 2pool, 3 for 3pool

amountOut

uint256

amountInMax

uint256

to

address

PreviousNonfungiblePositionManagerNextTrading Post V2

Last updated 9 months ago