LBQuoter

Git Sourcearrow-up-right

Author: Trader Joe

Helper contract to determine best path through multiple markets This contract shouldn't be used on-chain as it consumes a lot of gas It should be used for off-chain purposes, like calculating the best path for a swap

State Variables

_factoryV1

address private immutable _factoryV1;

_legacyFactoryV2

address private immutable _legacyFactoryV2;

_factoryV2_1

address private immutable _factoryV2_1;

_factoryV2_2

address private immutable _factoryV2_2;

_legacyRouterV2

address private immutable _legacyRouterV2;

_routerV2_1

_routerV2_2

Functions

constructor

Constructor

Parameters

Name
Type
Description

factoryV1

address

Dex V1 factory address

legacyFactoryV2

address

Dex V2 factory address

factoryV2_1

address

Dex V2.1 factory address

factoryV2_2

address

Dex V2.2 factory address

legacyRouterV2

address

Dex V2 router address

routerV2_1

address

Dex V2.1 router address

routerV2_2

address

Dex V2.2 router address

getFactoryV1

Returns the Dex V1 factory address

Returns

Name
Type
Description

factoryV1

address

Dex V1 factory address

getLegacyFactoryV2

Returns the Dex V2 factory address

Returns

Name
Type
Description

legacyFactoryV2

address

Dex V2 factory address

getFactoryV2_1

Returns the Dex V2.1 factory address

Returns

Name
Type
Description

factoryV2_1

address

Dex V2.1 factory address

getFactoryV2_2

Returns the Dex V2.2 factory address

Returns

Name
Type
Description

factoryV2_2

address

Dex V2.2 factory address

getLegacyRouterV2

Returns the Dex V2 router address

Returns

Name
Type
Description

legacyRouterV2

address

Dex V2 router address

getRouterV2_1

Returns the Dex V2.1 router address

Returns

Name
Type
Description

routerV2_1

address

Dex V2.1 router address

getRouterV2_2

Returns the Dex V2.2 router address

Returns

Name
Type
Description

routerV2_2

address

Dex V2.2 router address

findBestPathFromAmountIn

Finds the best path given a list of tokens and the input amount wanted from the swap

Parameters

Name
Type
Description

route

address[]

List of the tokens to go through

amountIn

uint128

Swap amount in

Returns

Name
Type
Description

quote

Quote

The Quote structure containing the necessary element to perform the swap

findBestPathFromAmountOut

Finds the best path given a list of tokens and the output amount wanted from the swap

Parameters

Name
Type
Description

route

address[]

List of the tokens to go through

amountOut

uint128

Swap amount out

Returns

Name
Type
Description

quote

Quote

The Quote structure containing the necessary element to perform the swap

_getReserves

Forked from JoeLibrary

Doesn't rely on the init code hash of the factory

Parameters

Name
Type
Description

pair

address

Address of the pair

tokenA

address

Address of token A

tokenB

address

Address of token B

Returns

Name
Type
Description

reserveA

uint256

Reserve of token A in the pair

reserveB

uint256

Reserve of token B in the pair

_getV2Quote

Calculates a quote for a V2 pair

Parameters

Name
Type
Description

amount

uint256

Amount in to consider

activeId

uint24

Current active Id of the considred pair

binStep

uint256

Bin step of the considered pair

swapForY

bool

Boolean describing if we are swapping from X to Y or the opposite

Returns

Name
Type
Description

quote

uint128

Amount Out if _amount was swapped with no slippage and no fees

Errors

LBQuoter_InvalidLength

Structs

Quote

*The quote struct returned by the quoter

  • route: address array of the token to go through

  • pairs: address array of the pairs to go through

  • binSteps: The bin step to use for each pair

  • versions: The version to use for each pair

  • amounts: The amounts of every step of the swap

  • virtualAmountsWithoutSlippage: The virtual amounts of every step of the swap without slippage

  • fees: The fees to pay for every step of the swap*

Last updated