Request Swap with Router
In this simple example, we request a swap with the router.
// JavaScript
// ...
// Encode path data.
const pathData: SwapPathData[] = route.paths.map(path => {
const pathTokenInRoute = path.stepsWithAmount[0].tokenIn;
const pathTokenIn = ethIn ? ZERO_ADDRESS : pathTokenInRoute;
// Path data
return {
steps: path.stepsWithAmount.map((step, i) => {
const isLastStep: boolean = i == (path.stepsWithAmount.length - 1);
// send to next step or recipient for last step
const stepTo: string = (
isLastStep ? to : path.stepsWithAmount[i + 1].pool.pool
);
// Determine withdraw mode, to withdraw native ETH or wETH on last step.
// 0 - vault internal transfer
// 1 - withdraw and unwrap to naitve ETH
// 2 - withdraw and wrap to wETH
const withdrawMode: number = (isLastStep ? (ethOut ? 1 : 2) : 0);
const data: string = defaultAbiCoder.encode(
["address", "address", "uint8"],
[step.tokenIn, stepTo, withdrawMode], // tokenIn, to, withdraw mode
);
// Step data
return {
pool: step.pool.pool,
data: data,
callback: ZERO_ADDRESS, // we don't have a callback
callbackData: '0x',
};
}),
tokenIn: pathTokenIn,
amountIn: path.amountIn,
};
});
const args: any[] = [
pathData,
amountOutMin,
deadline,
];
// Request the swap.
await router.swap(...args);
// ...
Last updated