const hre = require("hardhat");

async function main() {
    const CrossChainSwap = await hre.ethers.getContractFactory("SwapMain");
    /*
    * constructor
    *    address _messageBus,
    *    address[] memory _supportedDEXes,
    *    address _nativeWrap
    */

    // AVALANCHE 43114
    // MessageBus 0x5a926eeeAFc4D217ADd17e9641e8cE23Cd01Ad57
    // WAVAX native token address in AVALANCHE: 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7
    // USDC token address in AVALANCHE: 0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664
    // SUSHI: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506

    // FTM Fantom 250
    // MessageBus 0xFF4E183a0Ceb4Fa98E63BbF8077B929c8E5A2bA4
    // FTM native token address in BSC: 0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83
    // USDC token address in BSC: 0x04068DA6C83AFCFA0e13ba15A6696662335D5B75
    // SUSHI: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506

    const address = '';

    const crossChainSwap = await CrossChainSwap.attach(address);

    await crossChainSwap.transferWithSwapV2Native(
        0x93f56C28b66Fa3EEF980ab11a8a0E9D09c6576f5,
        21000000000000000000,
        43114,
        ['0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506',
            ['0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83', '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75'],
            '999999999999999',
            '0'
        ],
        ['0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506',
            '0x0000000000000000000000000000000000000000',
            '1',
            ['0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7'],
            '0x',
            '999999999999999',
            '0'
        ],
        1000000,
        true,
        {value: 21.00001}
    );

    await new Promise(r => setTimeout(r, 10000));

}

// We recommend this pattern to be able to use async/await everywhere
// and properly handle errors.
main()
    .then(() => process.exit(0))
    .catch((error) => {
        console.error(error);
        process.exit(1);
    });
