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