@dataxfi/pathfinder
v1.0.0
Published
> A module leveraging subgraph data from api.thegraph.com, respective to `chainId`, to determine swap paths for token pairs.
Downloads
5
Readme
Pathfinder
A module leveraging subgraph data from api.thegraph.com, respective to
chainId
, to determine swap paths for token pairs.
Navigation
Usage
const pathfinder = new Pathfinder(1);
try {
const Path = pathfinder.getTokenPath({
tokenInAddress: "0x967da4048cd07ab37855c090aaf366e4ce1b9f48",
tokenOutAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
IN: true,
});
} catch (error) {
//handle error
}
output
[
'0x967da4048cd07ab37855c090aaf366e4ce1b9f48',
'0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
'0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
]
API
getPoolsForToken
Makes request for pools associated to a token, sets nodes on the graph for each pool. Returns the next tokens to be searched OR null if a path can be made.
pathfinder.getPoolsForToken({
tokenAddress,
destinationAddress,
parentPoolAddress,
IN,
amt,
}: {
tokenAddress: string;
destinationAddress: string;
IN: boolean;
parentPoolAddress: string;
amt?: string;
}): Promise<INextTokensToSearch | null>
getTokenPath
Gets token path for a swap pair. Returns an array of tokens to be traded in order to route to the destination token, optimised to be the shortes path possible.
pathfinder.getTokenPath({
tokenAddress,
destinationAddress,
parentPoolAddress,
amt,
abortSignal,
IN,
}: {
tokenAddress: string;
destinationAddress: string;
IN: boolean;
parentPoolAddress?: string;
amt?: string;
abortSignal?: AbortSignal;
}): Promise<string[]>
nodes
The node graph being built by getPoolsForToken()
pathfinder.nodes
Limitations
Currently the subgraphs being queried are all subgraphs from the most popular dex's on supportedChains:
- uniswap (mainnet)
- quickswap (matic)
- carbonswap (EWT)
- pankackeswap (BSC)
- solarbeam (moonriver)
But there are other pools that are available. Apps like balancer use different pools and subgraphs, and support for these could potentially be added in the future.
Set up locally
- Fork and/or clone
- Run
Yarn install
- Run
Yarn build
Test locally
- Set up locally
- Run
yarn test