UNPKG

fsl-js-sdk

Version:
5,204 lines 154 kB
"use strict";
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StepnGoStakingAbi = exports.EvmSwapRouterAbi = exports.EvmErc20TokenAbi = exports.EvmUniswapPoolAbi = exports.gusdReceiveAddressAbiMap = exports.EvmUniswapFactoryAbi = exports.EvmFactoryPairAbi = exports.erc20Abi = exports.SOL_SWAP_PAIRS = exports.TOKEN_SWAP_PATH = exports.SOLTokenMintAddress = exports.EvmSwapAddress = exports.EvmUniswapFactoryAddress = exports.EvmSwapFactoryAddress = exports.CHAIN_LIST = exports.gusdReceiveAddressMap = exports.gusdAddressMap = exports.TOKEN_ADDRESS = exports.dooarPoolContract = exports.EvmSwapRouterAddress = exports.SolanaToken = exports.PolygonAmoyToken = exports.PolygonMumbaiToken = exports.PolygonERC20Token = exports.PolygonToken = exports.AGGAddress = exports.BNBChainToken = exports.EthereumERC20Token = exports.EthereumToken = exports.SupportedChains = exports.Chains = exports.TOKEN_NAME = exports.ChainId = void 0;
var ChainId;
(function (ChainId) {
    ChainId[ChainId["Ethereum"] = 1] = "Ethereum";
    ChainId[ChainId["BNBChain"] = 56] = "BNBChain";
    ChainId[ChainId["POLYGON"] = 137] = "POLYGON";
    ChainId[ChainId["POLYGON_MUMBAI"] = 80001] = "POLYGON_MUMBAI";
    ChainId[ChainId["POLYGON_AMOY"] = 80002] = "POLYGON_AMOY";
})(ChainId = exports.ChainId || (exports.ChainId = {}));
var TOKEN_NAME;
(function (TOKEN_NAME) {
    TOKEN_NAME["SOL"] = "SOL";
    TOKEN_NAME["POL"] = "POL";
    TOKEN_NAME["BNB"] = "BNB";
    TOKEN_NAME["GMT"] = "GMT";
    TOKEN_NAME["ETH"] = "ETH";
    TOKEN_NAME["GST"] = "GST";
    TOKEN_NAME["USDT"] = "USDT";
    TOKEN_NAME["USDC"] = "USDC";
    TOKEN_NAME["GGT"] = "GGT";
    TOKEN_NAME["SUT"] = "SUT";
    TOKEN_NAME["SAND"] = "SAND";
    TOKEN_NAME["GGUSD"] = "GGUSD";
    TOKEN_NAME["BAT"] = "BAT";
})(TOKEN_NAME = exports.TOKEN_NAME || (exports.TOKEN_NAME = {}));
var Chains;
(function (Chains) {
    Chains["polygon"] = "polygon";
    Chains["solana"] = "solana";
    Chains["ethereum"] = "ethereum";
    Chains["binance"] = "binance";
})(Chains = exports.Chains || (exports.Chains = {}));
exports.SupportedChains = [
    ChainId.Ethereum,
    ChainId.BNBChain,
    ChainId.POLYGON,
    ChainId.POLYGON_MUMBAI,
];
exports.EthereumToken = {
    WETH: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
    GST: '0x473037de59cf9484632f4A27B509CFE8d4a31404',
    GMT: '0xe3c408BD53c31C085a1746AF401A4042954ff740',
    USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
    USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
};
exports.EthereumERC20Token = {
    SAND: '0x3845badade8e6dff049820680d1f14bd3903a5d0',
    BAT: '0x0D8775F648430679A709E98d2b0Cb6250d2887EF',
};
exports.BNBChainToken = {
    WBNB: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',
    GST: '0x4a2c860cEC6471b9F5F5a336eB4F38bb21683c98',
    GMT: '0x3019BF2a2eF8040C242C9a4c5c4BD4C81678b2A1',
    USDC: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',
    USDT: '0x55d398326f99059fF775485246999027B3197955',
    GGUSD: '0xFFFFFF9936BD58a008855b0812B44D2c8dffE2aA',
};
exports.AGGAddress = '0xFFFFFFA11290Fe2c4bb99de778A3e248F61c1b35';
exports.PolygonToken = {
    WMATIC: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
    GMT: '0x714DB550b574b3E927af3D93E26127D15721D4C2',
    USDT: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F',
    GGT: '0x8349314651eDe274f8c5FeF01Aa65fF8da75E57c',
    SUT: '0x57211299bC356319BA5CA36873eB06896173F8bC',
    GST: '0xC289A1684A04faAf926204235588F5fc1D5e458e',
    GGUSD: '0xFFFFFF9936BD58a008855b0812B44D2c8dffE2aA',
    USDC: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359',
};
exports.PolygonERC20Token = {
    SAND: '0xbbba073c31bf03b8acf7c28ef0738decf3695683',
};
exports.PolygonMumbaiToken = {
    GMT: '0x7805E8212aEEC7AC7310B961289B15876a96a4A4',
    USDC: '0x4B8eed87b61023F5BEcCeBd2868C058FEe6B7Ac7',
};
exports.PolygonAmoyToken = {
    GMT: '0x106186CFe5310ec7CD9AA597C0458993A7bfCa26',
    GGT: '0x34Fa558d133A4C597043431B75e84553c333ce49',
};
exports.SolanaToken = {
    SOL: 'So11111111111111111111111111111111111111112',
    GST: 'AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB',
    GMT: '7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx',
    USDC: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
    USDT: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
    BAT: 'EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz',
    GGUSD: 'GGUSDyBUPFg5RrgWwqEqhXoha85iYGs6cL57SyK4G2Y7',
};
exports.EvmSwapRouterAddress = (_a = {},
    _a[Chains.ethereum] = '0x53e0e51b5Ed9202110D7Ecd637A4581db8b9879F',
    _a[Chains.solana] = '0x53e0e51b5Ed9202110D7Ecd637A4581db8b9879F',
    _a[Chains.polygon] = '0xAcc8e414ceeCF0BBF438f6c4B7417Ca59dcF7E47',
    _a[Chains.binance] = '0x53e0e51b5Ed9202110D7Ecd637A4581db8b9879F',
    _a);
exports.dooarPoolContract = {
    SOL_USDC: '5GGvkcqQ1554ibdc18JXiPqR8aJz6WV3JSNShoj32ufT',
    GST_USDC: 'AkpQwi28Q5XgDCrmT6GtRCnhjSdx5hiU1DjSzKXGKUUf',
    GMT_USDC: 'HQ1XxvXdEk3adEFgvbZgghhp8Aizor6W7m4VoRDx2f9i',
};
exports.TOKEN_ADDRESS = (_b = {},
    _b[Chains.ethereum] = (_c = {},
        _c[TOKEN_NAME.ETH] = exports.EthereumToken.WETH,
        _c[TOKEN_NAME.GST] = exports.EthereumToken.GST,
        _c[TOKEN_NAME.GMT] = exports.EthereumToken.GMT,
        _c[TOKEN_NAME.USDC] = exports.EthereumToken.USDC,
        _c[TOKEN_NAME.SAND] = exports.EthereumERC20Token.SAND,
        _c[TOKEN_NAME.BAT] = exports.EthereumERC20Token.BAT,
        _c[TOKEN_NAME.USDT] = exports.EthereumToken.USDT,
        _c),
    _b[Chains.solana] = (_d = {},
        _d[TOKEN_NAME.SOL] = exports.SolanaToken.SOL,
        _d[TOKEN_NAME.GST] = exports.SolanaToken.GST,
        _d[TOKEN_NAME.GMT] = exports.SolanaToken.GMT,
        _d[TOKEN_NAME.USDC] = exports.SolanaToken.USDC,
        _d[TOKEN_NAME.BAT] = exports.SolanaToken.BAT,
        _d[TOKEN_NAME.USDT] = exports.SolanaToken.USDT,
        _d[TOKEN_NAME.GGUSD] = exports.SolanaToken.GGUSD,
        _d),
    _b[Chains.polygon] = (_e = {},
        _e[TOKEN_NAME.POL] = exports.PolygonToken.WMATIC,
        _e[TOKEN_NAME.GMT] = exports.PolygonToken.GMT,
        _e[TOKEN_NAME.USDT] = exports.PolygonToken.USDT,
        _e[TOKEN_NAME.GGT] = exports.PolygonToken.GGT,
        _e[TOKEN_NAME.SUT] = exports.PolygonToken.SUT,
        _e[TOKEN_NAME.GST] = exports.PolygonToken.GST,
        _e[TOKEN_NAME.GGUSD] = exports.PolygonToken.GGUSD,
        _e[TOKEN_NAME.SAND] = exports.PolygonERC20Token.SAND,
        _e[TOKEN_NAME.USDC] = exports.PolygonToken.USDC,
        _e),
    _b[Chains.binance] = (_f = {},
        _f[TOKEN_NAME.BNB] = exports.BNBChainToken.WBNB,
        _f[TOKEN_NAME.GMT] = exports.BNBChainToken.GMT,
        _f[TOKEN_NAME.GST] = exports.BNBChainToken.GST,
        _f[TOKEN_NAME.USDC] = exports.BNBChainToken.USDC,
        _f[TOKEN_NAME.GGUSD] = exports.BNBChainToken.GGUSD,
        _f[TOKEN_NAME.USDT] = exports.BNBChainToken.USDT,
        _f),
    _b);
exports.gusdAddressMap = (_g = {},
    _g[Chains.polygon] = exports.PolygonToken.GGUSD,
    _g[Chains.binance] = exports.BNBChainToken.GGUSD,
    _g[Chains.solana] = exports.SolanaToken.GGUSD,
    _g);
exports.gusdReceiveAddressMap = (_h = {},
    _h[Chains.polygon] = '0xFFFFFF003605c71C2981d0dED6182b762D25a6E5',
    _h[Chains.binance] = '0xFFFFFF9936BD58a008855b0812B44D2c8dffE2aA',
    _h);
exports.CHAIN_LIST = (_j = {},
    _j[Chains.ethereum] = {
        id: ChainId.Ethereum,
        rpc: 'https://lb4.stepn.com', // 'https://eth.drpc.org',
    },
    _j[Chains.polygon] = {
        id: ChainId.POLYGON,
        rpc: 'https://lb5.stepn.com', // 'https://polygon.drpc.org',
    },
    _j[Chains.solana] = {
        rpc: 'https://lb2.stepn.com',
        id: 0,
    },
    _j[Chains.binance] = {
        rpc: 'https://lb3.stepn.com',
        id: 56,
    },
    _j);
exports.EvmSwapFactoryAddress = (_k = {},
    _k[Chains.ethereum] = '0x1e895bFe59E3A5103e8B7dA3897d1F2391476f3c',
    _k[Chains.polygon] = '0xBdd46Fd173ad1d158578FEb5d10573BaF8ee89d2',
    _k[Chains.binance] = '0x1e895bFe59E3A5103e8B7dA3897d1F2391476f3c',
    _k);
exports.EvmUniswapFactoryAddress = (_l = {},
    _l[Chains.ethereum] = '0x1F98431c8aD98523631AE4a59f267346ea31F984',
    _l[Chains.polygon] = '0x1F98431c8aD98523631AE4a59f267346ea31F984',
    _l[Chains.binance] = '0x1F98431c8aD98523631AE4a59f267346ea31F984',
    _l);
exports.EvmSwapAddress = (_m = {},
    _m[Chains.ethereum] = '0x53e0e51b5Ed9202110D7Ecd637A4581db8b9879F',
    _m[Chains.solana] = '0x53e0e51b5Ed9202110D7Ecd637A4581db8b9879F',
    _m[Chains.polygon] = '0xAcc8e414ceeCF0BBF438f6c4B7417Ca59dcF7E47',
    _m[Chains.binance] = '0x53e0e51b5Ed9202110D7Ecd637A4581db8b9879F',
    _m);
exports.SOLTokenMintAddress = (_o = {},
    _o[TOKEN_NAME.GST] = 'AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB',
    _o[TOKEN_NAME.GMT] = '7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx',
    _o[TOKEN_NAME.USDC] = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
    _o);
exports.TOKEN_SWAP_PATH = (_p = {},
    _p[Chains.ethereum] = (_q = {},
        _q[TOKEN_NAME.ETH] = (_r = {},
            _r[TOKEN_NAME.GMT] = [
                exports.EthereumToken.WETH,
                exports.EthereumToken.USDC,
                exports.EthereumToken.GMT,
            ],
            _r[TOKEN_NAME.GST] = [
                exports.EthereumToken.WETH,
                exports.EthereumToken.USDC,
                exports.EthereumToken.GST,
            ],
            _r[TOKEN_NAME.USDC] = [exports.EthereumToken.WETH, exports.EthereumToken.USDC],
            _r),
        _q[TOKEN_NAME.USDC] = (_s = {},
            _s[TOKEN_NAME.ETH] = [exports.EthereumToken.USDC, exports.EthereumToken.WETH],
            _s[TOKEN_NAME.GST] = [exports.EthereumToken.USDC, exports.EthereumToken.GST],
            _s[TOKEN_NAME.GMT] = [exports.EthereumToken.USDC, exports.EthereumToken.GMT],
            _s),
        _q[TOKEN_NAME.GMT] = (_t = {},
            _t[TOKEN_NAME.ETH] = [
                exports.EthereumToken.GMT,
                exports.EthereumToken.USDC,
                exports.EthereumToken.WETH,
            ],
            _t[TOKEN_NAME.GST] = [
                exports.EthereumToken.GMT,
                exports.EthereumToken.USDC,
                exports.EthereumToken.GST,
            ],
            _t[TOKEN_NAME.USDC] = [exports.EthereumToken.GMT, exports.EthereumToken.USDC],
            _t),
        _q[TOKEN_NAME.GST] = (_u = {},
            _u[TOKEN_NAME.ETH] = [
                exports.EthereumToken.GST,
                exports.EthereumToken.USDC,
                exports.EthereumToken.WETH,
            ],
            _u[TOKEN_NAME.GMT] = [
                exports.EthereumToken.GST,
                exports.EthereumToken.USDC,
                exports.EthereumToken.GMT,
            ],
            _u[TOKEN_NAME.USDC] = [exports.EthereumToken.GST, exports.EthereumToken.USDC],
            _u),
        _q),
    _p[Chains.polygon] = (_v = {},
        _v[TOKEN_NAME.POL] = (_w = {},
            _w[TOKEN_NAME.GMT] = [
                exports.PolygonToken.WMATIC,
                exports.PolygonToken.USDT,
                exports.PolygonToken.GMT,
            ],
            _w[TOKEN_NAME.USDT] = [exports.PolygonToken.WMATIC, exports.PolygonToken.USDT],
            _w[TOKEN_NAME.GGT] = [
                exports.PolygonToken.WMATIC,
                exports.PolygonToken.USDT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.GGT,
            ],
            _w[TOKEN_NAME.SUT] = [
                exports.PolygonToken.WMATIC,
                exports.PolygonToken.USDT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.SUT,
            ],
            _w[TOKEN_NAME.GST] = [
                exports.PolygonToken.WMATIC,
                exports.PolygonToken.USDT,
                exports.PolygonToken.GST,
            ],
            _w),
        _v[TOKEN_NAME.GMT] = (_x = {},
            _x[TOKEN_NAME.POL] = [
                exports.PolygonToken.GMT,
                exports.PolygonToken.USDT,
                exports.PolygonToken.WMATIC,
            ],
            _x[TOKEN_NAME.USDT] = [exports.PolygonToken.GMT, exports.PolygonToken.USDT],
            _x[TOKEN_NAME.SUT] = [exports.PolygonToken.GMT, exports.PolygonToken.SUT],
            _x[TOKEN_NAME.GGT] = [exports.PolygonToken.GMT, exports.PolygonToken.GGT],
            _x[TOKEN_NAME.GST] = [exports.PolygonToken.GMT, exports.PolygonToken.USDT, exports.PolygonToken.GST],
            _x),
        _v[TOKEN_NAME.USDT] = (_y = {},
            _y[TOKEN_NAME.GMT] = [exports.PolygonToken.USDT, exports.PolygonToken.GMT],
            _y[TOKEN_NAME.POL] = [exports.PolygonToken.USDT, exports.PolygonToken.WMATIC],
            _y[TOKEN_NAME.SUT] = [exports.PolygonToken.USDT, exports.PolygonToken.GMT, exports.PolygonToken.SUT],
            _y[TOKEN_NAME.GGT] = [exports.PolygonToken.USDT, exports.PolygonToken.GMT, exports.PolygonToken.GGT],
            _y[TOKEN_NAME.GST] = [exports.PolygonToken.USDT, exports.PolygonToken.GST],
            _y),
        _v[TOKEN_NAME.SUT] = (_z = {},
            _z[TOKEN_NAME.POL] = [
                exports.PolygonToken.SUT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.USDT,
                exports.PolygonToken.WMATIC,
            ],
            _z[TOKEN_NAME.USDT] = [
                exports.PolygonToken.SUT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.USDT,
            ],
            _z[TOKEN_NAME.GMT] = [exports.PolygonToken.SUT, exports.PolygonToken.GMT],
            _z[TOKEN_NAME.GGT] = [exports.PolygonToken.SUT, exports.PolygonToken.GMT, exports.PolygonToken.GGT],
            _z[TOKEN_NAME.GST] = [
                exports.PolygonToken.SUT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.USDT,
                exports.PolygonToken.GST,
            ],
            _z),
        _v[TOKEN_NAME.GGT] = (_0 = {},
            _0[TOKEN_NAME.POL] = [
                exports.PolygonToken.GGT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.USDT,
                exports.PolygonToken.WMATIC,
            ],
            _0[TOKEN_NAME.USDT] = [
                exports.PolygonToken.GGT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.USDT,
            ],
            _0[TOKEN_NAME.GMT] = [exports.PolygonToken.GGT, exports.PolygonToken.GMT],
            _0[TOKEN_NAME.SUT] = [exports.PolygonToken.GGT, exports.PolygonToken.GMT, exports.PolygonToken.SUT],
            _0[TOKEN_NAME.GST] = [
                exports.PolygonToken.GGT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.USDT,
                exports.PolygonToken.GST,
            ],
            _0),
        _v[TOKEN_NAME.GST] = (_1 = {},
            _1[TOKEN_NAME.POL] = [
                exports.PolygonToken.GST,
                exports.PolygonToken.USDT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.USDT,
                exports.PolygonToken.WMATIC,
            ],
            _1[TOKEN_NAME.USDT] = [exports.PolygonToken.GST, exports.PolygonToken.USDT],
            _1[TOKEN_NAME.GMT] = [exports.PolygonToken.GST, exports.PolygonToken.USDT, exports.PolygonToken.GMT],
            _1[TOKEN_NAME.GGT] = [
                exports.PolygonToken.GST,
                exports.PolygonToken.USDT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.GGT,
            ],
            _1[TOKEN_NAME.SUT] = [
                exports.PolygonToken.GST,
                exports.PolygonToken.USDT,
                exports.PolygonToken.GMT,
                exports.PolygonToken.SUT,
            ],
            _1),
        _v),
    _p[Chains.binance] = (_2 = {},
        _2[TOKEN_NAME.BNB] = (_3 = {},
            _3[TOKEN_NAME.GMT] = [
                exports.BNBChainToken.WBNB,
                exports.BNBChainToken.USDC,
                exports.BNBChainToken.GMT,
            ],
            _3[TOKEN_NAME.GST] = [
                exports.BNBChainToken.WBNB,
                exports.BNBChainToken.USDC,
                exports.BNBChainToken.GST,
            ],
            _3[TOKEN_NAME.USDC] = [exports.BNBChainToken.WBNB, exports.BNBChainToken.USDC],
            _3),
        _2[TOKEN_NAME.USDC] = (_4 = {},
            _4[TOKEN_NAME.BNB] = [exports.BNBChainToken.USDC, exports.BNBChainToken.WBNB],
            _4[TOKEN_NAME.GST] = [exports.BNBChainToken.USDC, exports.BNBChainToken.GST],
            _4[TOKEN_NAME.GMT] = [exports.BNBChainToken.USDC, exports.BNBChainToken.GMT],
            _4),
        _2[TOKEN_NAME.GMT] = (_5 = {},
            _5[TOKEN_NAME.GST] = [
                exports.BNBChainToken.GMT,
                exports.BNBChainToken.USDC,
                exports.BNBChainToken.GST,
            ],
            _5[TOKEN_NAME.BNB] = [
                exports.BNBChainToken.GMT,
                exports.BNBChainToken.USDC,
                exports.BNBChainToken.WBNB,
            ],
            _5[TOKEN_NAME.USDC] = [exports.BNBChainToken.GMT, exports.BNBChainToken.USDC],
            _5),
        _2[TOKEN_NAME.GST] = (_6 = {},
            _6[TOKEN_NAME.GMT] = [
                exports.BNBChainToken.GST,
                exports.BNBChainToken.USDC,
                exports.BNBChainToken.GMT,
            ],
            _6[TOKEN_NAME.BNB] = [
                exports.BNBChainToken.GST,
                exports.BNBChainToken.USDC,
                exports.BNBChainToken.WBNB,
            ],
            _6[TOKEN_NAME.USDC] = [exports.BNBChainToken.GST, exports.BNBChainToken.USDC],
            _6),
        _2),
    _p[Chains.solana] = (_7 = {},
        _7[TOKEN_NAME.SOL] = (_8 = {},
            _8[TOKEN_NAME.GMT] = [exports.SolanaToken.SOL, exports.SolanaToken.USDC, exports.SolanaToken.GMT],
            _8[TOKEN_NAME.GST] = [exports.SolanaToken.SOL, exports.SolanaToken.USDC, exports.SolanaToken.GST],
            _8[TOKEN_NAME.USDC] = [exports.SolanaToken.SOL, exports.SolanaToken.USDC],
            _8[TOKEN_NAME.BAT] = [exports.SolanaToken.SOL, exports.SolanaToken.BAT],
            _8[TOKEN_NAME.GGUSD] = [exports.SolanaToken.SOL, exports.SolanaToken.GGUSD],
            _8),
        _7[TOKEN_NAME.USDC] = (_9 = {},
            _9[TOKEN_NAME.SOL] = [exports.SolanaToken.USDC, exports.SolanaToken.SOL],
            _9[TOKEN_NAME.GST] = [exports.SolanaToken.USDC, exports.SolanaToken.GST],
            _9[TOKEN_NAME.GMT] = [exports.SolanaToken.USDC, exports.SolanaToken.GMT],
            _9[TOKEN_NAME.BAT] = [exports.SolanaToken.USDC, exports.SolanaToken.SOL, exports.SolanaToken.BAT],
            _9[TOKEN_NAME.USDC] = [exports.SolanaToken.USDC, exports.SolanaToken.USDT],
            _9[TOKEN_NAME.GGUSD] = [exports.SolanaToken.USDC, exports.SolanaToken.GGUSD],
            _9),
        _7[TOKEN_NAME.GMT] = (_10 = {},
            _10[TOKEN_NAME.GST] = [exports.SolanaToken.GMT, exports.SolanaToken.USDC, exports.SolanaToken.GST],
            _10[TOKEN_NAME.SOL] = [exports.SolanaToken.GMT, exports.SolanaToken.USDC, exports.SolanaToken.SOL],
            _10[TOKEN_NAME.USDC] = [exports.SolanaToken.GMT, exports.SolanaToken.USDC],
            _10[TOKEN_NAME.BAT] = [
                exports.SolanaToken.GMT,
                exports.SolanaToken.USDC,
                exports.SolanaToken.SOL,
                exports.SolanaToken.BAT,
            ],
            _10[TOKEN_NAME.GGUSD] = [exports.SolanaToken.GMT, exports.SolanaToken.GGUSD],
            _10),
        _7[TOKEN_NAME.GST] = (_11 = {},
            _11[TOKEN_NAME.GMT] = [exports.SolanaToken.GST, exports.SolanaToken.USDC, exports.SolanaToken.GMT],
            _11[TOKEN_NAME.SOL] = [exports.SolanaToken.GST, exports.SolanaToken.USDC, exports.SolanaToken.SOL],
            _11[TOKEN_NAME.USDC] = [exports.SolanaToken.GST, exports.BNBChainToken.USDC],
            _11[TOKEN_NAME.BAT] = [
                exports.SolanaToken.GST,
                exports.SolanaToken.USDC,
                exports.SolanaToken.SOL,
                exports.SolanaToken.BAT,
            ],
            _11[TOKEN_NAME.GGUSD] = [exports.SolanaToken.GST, exports.SolanaToken.GGUSD],
            _11),
        _7[TOKEN_NAME.BAT] = (_12 = {},
            _12[TOKEN_NAME.GMT] = [
                exports.SolanaToken.BAT,
                exports.SolanaToken.SOL,
                exports.SolanaToken.USDC,
                exports.SolanaToken.GMT,
            ],
            _12[TOKEN_NAME.SOL] = [exports.SolanaToken.BAT, exports.SolanaToken.SOL],
            _12[TOKEN_NAME.USDC] = [exports.SolanaToken.BAT, exports.SolanaToken.SOL, exports.BNBChainToken.USDC],
            _12[TOKEN_NAME.GST] = [
                exports.SolanaToken.BAT,
                exports.SolanaToken.SOL,
                exports.SolanaToken.USDC,
                exports.SolanaToken.GST,
            ],
            _12[TOKEN_NAME.GGUSD] = [exports.SolanaToken.BAT, exports.SolanaToken.GGUSD],
            _12),
        _7[TOKEN_NAME.USDT] = (_13 = {},
            _13[TOKEN_NAME.SOL] = [exports.SolanaToken.USDT, exports.SolanaToken.SOL],
            _13[TOKEN_NAME.GST] = [exports.SolanaToken.USDT, exports.SolanaToken.GST],
            _13[TOKEN_NAME.GMT] = [exports.SolanaToken.USDT, exports.SolanaToken.GMT],
            _13[TOKEN_NAME.BAT] = [exports.SolanaToken.USDT, exports.SolanaToken.SOL, exports.SolanaToken.BAT],
            _13[TOKEN_NAME.USDC] = [exports.SolanaToken.USDT, exports.SolanaToken.USDC],
            _13[TOKEN_NAME.GGUSD] = [exports.SolanaToken.USDT, exports.SolanaToken.GGUSD],
            _13),
        _7[TOKEN_NAME.GGUSD] = (_14 = {},
            _14[TOKEN_NAME.SOL] = [exports.SolanaToken.GGUSD, exports.SolanaToken.SOL],
            _14[TOKEN_NAME.GST] = [exports.SolanaToken.GGUSD, exports.SolanaToken.GST],
            _14[TOKEN_NAME.GMT] = [exports.SolanaToken.GGUSD, exports.SolanaToken.GMT],
            _14[TOKEN_NAME.BAT] = [exports.SolanaToken.GGUSD, exports.SolanaToken.SOL, exports.SolanaToken.BAT],
            _14[TOKEN_NAME.USDC] = [exports.SolanaToken.GGUSD, exports.SolanaToken.USDC],
            _14[TOKEN_NAME.USDT] = [exports.SolanaToken.GGUSD, exports.SolanaToken.USDT],
            _14),
        _7),
    _p);
exports.SOL_SWAP_PAIRS = (_15 = {},
    _15[TOKEN_NAME.SOL] = (_16 = {},
        _16[TOKEN_NAME.USDC] = [[TOKEN_NAME.SOL, TOKEN_NAME.USDC]],
        _16[TOKEN_NAME.GMT] = [
            [TOKEN_NAME.SOL, TOKEN_NAME.USDC],
            [TOKEN_NAME.USDC, TOKEN_NAME.GMT],
        ],
        _16[TOKEN_NAME.GST] = [
            [TOKEN_NAME.SOL, TOKEN_NAME.USDC],
            [TOKEN_NAME.USDC, TOKEN_NAME.GST],
        ],
        _16),
    _15[TOKEN_NAME.USDC] = (_17 = {},
        _17[TOKEN_NAME.SOL] = [[TOKEN_NAME.USDC, TOKEN_NAME.SOL]],
        _17[TOKEN_NAME.GMT] = [[TOKEN_NAME.USDC, TOKEN_NAME.GMT]],
        _17[TOKEN_NAME.GST] = [[TOKEN_NAME.USDC, TOKEN_NAME.GST]],
        _17),
    _15[TOKEN_NAME.GMT] = (_18 = {},
        _18[TOKEN_NAME.SOL] = [
            [TOKEN_NAME.GMT, TOKEN_NAME.USDC],
            [TOKEN_NAME.USDC, TOKEN_NAME.SOL],
        ],
        _18[TOKEN_NAME.USDC] = [[TOKEN_NAME.GMT, TOKEN_NAME.USDC]],
        _18[TOKEN_NAME.GST] = [
            [TOKEN_NAME.GMT, TOKEN_NAME.USDC],
            [TOKEN_NAME.USDC, TOKEN_NAME.GST],
        ],
        _18),
    _15[TOKEN_NAME.GST] = (_19 = {},
        _19[TOKEN_NAME.SOL] = [
            [TOKEN_NAME.GST, TOKEN_NAME.USDC],
            [TOKEN_NAME.USDC, TOKEN_NAME.SOL],
        ],
        _19[TOKEN_NAME.GMT] = [
            [TOKEN_NAME.GST, TOKEN_NAME.USDC],
            [TOKEN_NAME.USDC, TOKEN_NAME.GMT],
        ],
        _19[TOKEN_NAME.USDC] = [[TOKEN_NAME.GST, TOKEN_NAME.USDC]],
        _19),
    _15);
exports.erc20Abi = [
    {
        constant: false,
        inputs: [
            { name: '_to', type: 'address' },
            { name: '_value', type: 'uint256' },
        ],
        name: 'transfer',
        outputs: [{ name: '', type: 'bool' }],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [
            { name: '', type: 'address' },
            { name: '', type: 'address' },
        ],
        name: 'allowance',
        outputs: [{ name: '', type: 'uint256' }],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            { name: 'guy', type: 'address' },
            { name: 'wad', type: 'uint256' },
        ],
        name: 'approve',
        outputs: [{ name: '', type: 'bool' }],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'decimals',
        outputs: [
            {
                internalType: 'uint8',
                name: '',
                type: 'uint8',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [{ name: '', type: 'address' }],
        name: 'balanceOf',
        outputs: [{ name: '', type: 'uint256' }],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
];
exports.EvmFactoryPairAbi = [
    'function getPair(address tokenA, address tokenB) external view returns (address pair)',
    'function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)',
    'function token0() external view returns (address)',
    'function token1() external view returns (address)',
];
exports.EvmUniswapFactoryAbi = [
    {
        inputs: [
            { internalType: 'address', name: '', type: 'address' },
            { internalType: 'address', name: '', type: 'address' },
            { internalType: 'uint24', name: '', type: 'uint24' },
        ],
        name: 'getPool',
        outputs: [{ internalType: 'address', name: '', type: 'address' }],
        stateMutability: 'view',
        type: 'function',
    },
];
var PolygonReceiveAbi = [
    {
        inputs: [
            {
                internalType: 'address',
                name: '_token',
                type: 'address',
            },
            {
                internalType: 'address',
                name: '_lzEndpoint',
                type: 'address',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'constructor',
    },
    {
        inputs: [],
        name: 'InvalidBps',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidDelegate',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidEndpointCall',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidFeeOwner',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidInitialization',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidLocalDecimals',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'bytes',
                name: 'options',
                type: 'bytes',
            },
        ],
        name: 'InvalidOptions',
        type: 'error',
    },
    {
        inputs: [],
        name: 'LzTokenUnavailable',
        type: 'error',
    },
    {
        inputs: [],
        name: 'NoFeesToWithdraw',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: 'eid',
                type: 'uint32',
            },
        ],
        name: 'NoPeer',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'msgValue',
                type: 'uint256',
            },
        ],
        name: 'NotEnoughNative',
        type: 'error',
    },
    {
        inputs: [],
        name: 'NotInitializing',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'addr',
                type: 'address',
            },
        ],
        name: 'OnlyEndpoint',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: 'eid',
                type: 'uint32',
            },
            {
                internalType: 'bytes32',
                name: 'sender',
                type: 'bytes32',
            },
        ],
        name: 'OnlyPeer',
        type: 'error',
    },
    {
        inputs: [],
        name: 'OnlySelf',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'owner',
                type: 'address',
            },
        ],
        name: 'OwnableInvalidOwner',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'account',
                type: 'address',
            },
        ],
        name: 'OwnableUnauthorizedAccount',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'token',
                type: 'address',
            },
        ],
        name: 'SafeERC20FailedOperation',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'bytes',
                name: 'result',
                type: 'bytes',
            },
        ],
        name: 'SimulationResult',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'amountLD',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'minAmountLD',
                type: 'uint256',
            },
        ],
        name: 'SlippageExceeded',
        type: 'error',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint16',
                name: 'feeBps',
                type: 'uint16',
            },
        ],
        name: 'DefaultFeeBpsSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'eid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'uint16',
                        name: 'msgType',
                        type: 'uint16',
                    },
                    {
                        internalType: 'bytes',
                        name: 'options',
                        type: 'bytes',
                    },
                ],
                indexed: false,
                internalType: 'struct EnforcedOptionParam[]',
                name: '_enforcedOptions',
                type: 'tuple[]',
            },
        ],
        name: 'EnforcedOptionSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'address',
                name: 'feeAddress',
                type: 'address',
            },
        ],
        name: 'FeeAddress',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint32',
                name: 'dstEid',
                type: 'uint32',
            },
            {
                indexed: false,
                internalType: 'uint16',
                name: 'feeBps',
                type: 'uint16',
            },
            {
                indexed: false,
                internalType: 'bool',
                name: 'enabled',
                type: 'bool',
            },
        ],
        name: 'FeeBpsSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'to',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amountLD',
                type: 'uint256',
            },
        ],
        name: 'FeeWithdrawn',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint64',
                name: 'version',
                type: 'uint64',
            },
        ],
        name: 'Initialized',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'address',
                name: 'inspector',
                type: 'address',
            },
        ],
        name: 'MsgInspectorSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'bytes32',
                name: 'guid',
                type: 'bytes32',
            },
            {
                indexed: false,
                internalType: 'uint32',
                name: 'srcEid',
                type: 'uint32',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'toAddress',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amountReceivedLD',
                type: 'uint256',
            },
        ],
        name: 'OFTReceived',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'bytes32',
                name: 'guid',
                type: 'bytes32',
            },
            {
                indexed: false,
                internalType: 'uint32',
                name: 'dstEid',
                type: 'uint32',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'fromAddress',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amountSentLD',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amountReceivedLD',
                type: 'uint256',
            },
        ],
        name: 'OFTSent',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'previousOwner',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'newOwner',
                type: 'address',
            },
        ],
        name: 'OwnershipTransferred',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint32',
                name: 'eid',
                type: 'uint32',
            },
            {
                indexed: false,
                internalType: 'bytes32',
                name: 'peer',
                type: 'bytes32',
            },
        ],
        name: 'PeerSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'address',
                name: 'preCrimeAddress',
                type: 'address',
            },
        ],
        name: 'PreCrimeSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'account',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'bool',
                name: 'isWhitelisted',
                type: 'bool',
            },
        ],
        name: 'WhitelistUpdated',
        type: 'event',
    },
    {
        inputs: [],
        name: 'BPS_DENOMINATOR',
        outputs: [
            {
                internalType: 'uint16',
                name: '',
                type: 'uint16',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'SEND',
        outputs: [
            {
                internalType: 'uint16',
                name: '',
                type: 'uint16',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'SEND_AND_CALL',
        outputs: [
            {
                internalType: 'uint16',
                name: '',
                type: 'uint16',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_account',
                type: 'address',
            },
        ],
        name: 'addToWhitelist',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'srcEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'sender',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint64',
                        name: 'nonce',
                        type: 'uint64',
                    },
                ],
                internalType: 'struct Origin',
                name: 'origin',
                type: 'tuple',
            },
        ],
        name: 'allowInitializePath',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'approvalRequired',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_eid',
                type: 'uint32',
            },
            {
                internalType: 'uint16',
                name: '_msgType',
                type: 'uint16',
            },
            {
                internalType: 'bytes',
                name: '_extraOptions',
                type: 'bytes',
            },
        ],
        name: 'combineOptions',
        outputs: [
            {
                internalType: 'bytes',
                name: '',
                type: 'bytes',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'decimalConversionRate',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'defaultFeeBps',
        outputs: [
            {
                internalType: 'uint16',
                name: '',
                type: 'uint16',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'endpoint',
        outputs: [
            {
                internalType: 'contract ILayerZeroEndpointV2',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_eid',
                type: 'uint32',
            },
            {
                internalType: 'uint16',
                name: '_msgType',
                type: 'uint16',
            },
        ],
        name: 'enforcedOptions',
        outputs: [
            {
                internalType: 'bytes',
                name: '',
                type: 'bytes',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'feeBalance',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_dstEid',
                type: 'uint32',
            },
        ],
        name: 'feeBps',
        outputs: [
            {
                components: [
                    {
                        internalType: 'uint16',
                        name: 'feeBps',
                        type: 'uint16',
                    },
                    {
                        internalType: 'bool',
                        name: 'enabled',
                        type: 'bool',
                    },
                ],
                internalType: 'struct FeeConfig',
                name: '',
                type: 'tuple',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_dstEid',
                type: 'uint32',
            },
            {
                internalType: 'uint256',
                name: '_amount',
                type: 'uint256',
            },
        ],
        name: 'getFee',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'getFeeAddress',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_delegate',
                type: 'address',
            },
        ],
        name: 'initialize',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'srcEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'sender',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint64',
                        name: 'nonce',
                        type: 'uint64',
                    },
                ],
                internalType: 'struct Origin',
                name: '',
                type: 'tuple',
            },
            {
                internalType: 'bytes',
                name: '',
                type: 'bytes',
            },
            {
                internalType: 'address',
                name: '_sender',
                type: 'address',
            },
        ],
        name: 'isComposeMsgSender',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_eid',
                type: 'uint32',
            },
            {
                internalType: 'bytes32',
                name: '_peer',
                type: 'bytes32',
            },
        ],
        name: 'isPeer',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_account',
                type: 'address',
            },
        ],
        name: 'isWhitelisted',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'srcEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'sender',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint64',
                        name: 'nonce',
                        type: 'uint64',
                    },
                ],
                internalType: 'struct Origin',
                name: '_origin',
                type: 'tuple',
            },
            {
                internalType: 'bytes32',
                name: '_guid',
                type: 'bytes32',
            },
            {
                internalType: 'bytes',
                name: '_message',
                type: 'bytes',
            },
            {
                internalType: 'address',
                name: '_executor',
                type: 'address',
            },
            {
                internalType: 'bytes',
                name: '_extraData',
                type: 'bytes',
            },
        ],
        name: 'lzReceive',
        outputs: [],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        components: [
                            {
                                internalType: 'uint32',
                                name: 'srcEid',
                                type: 'uint32',
                            },
                            {
                                internalType: 'bytes32',
                                name: 'sender',
                                type: 'bytes32',
                            },
                            {
                                internalType: 'uint64',
                                name: 'nonce',
                                type: 'uint64',
                            },
                        ],
                        internalType: 'struct Origin',
                        name: 'origin',
                        type: 'tuple',
                    },
                    {
                        internalType: 'uint32',
                        name: 'dstEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'address',
                        name: 'receiver',
                        type: 'address',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'guid',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint256',
                        name: 'value',
                        type: 'uint256',
                    },
                    {
                        internalType: 'address',
                        name: 'executor',
                        type: 'address',
                    },
                    {
                        internalType: 'bytes',
                        name: 'message',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'extraData',
                        type: 'bytes',
                    },
                ],
                internalType: 'struct InboundPacket[]',
                name: '_packets',
                type: 'tuple[]',
            },
        ],
        name: 'lzReceiveAndRevert',
        outputs: [],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'srcEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'sender',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint64',
                        name: 'nonce',
                        type: 'uint64',
                    },
                ],
                internalType: 'struct Origin',
                name: '_origin',
                type: 'tuple',
            },
            {
                internalType: 'bytes32',
                name: '_guid',
                type: 'bytes32',
            },
            {
                internalType: 'bytes',
                name: '_message',
                type: 'bytes',
            },
            {
                internalType: 'address',
                name: '_executor',
                type: 'address',
            },
            {
                internalType: 'bytes',
                name: '_extraData',
                type: 'bytes',
            },
        ],
        name: 'lzReceiveSimulate',
        outputs: [],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'msgInspector',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '',
                type: 'uint32',
            },
            {
                internalType: 'bytes32',
                name: '',
                type: 'bytes32',
            },
        ],
        name: 'nextNonce',
        outputs: [
            {
                internalType: 'uint64',
                name: 'nonce',
                type: 'uint64',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'oApp',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'oAppVersion',
        outputs: [
            {
                internalType: 'uint64',
                name: 'senderVersion',
                type: 'uint64',
            },
            {
                internalType: 'uint64',
                name: 'receiverVersion',
                type: 'uint64',
            },
        ],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [],
        name: 'oftVersion',
        outputs: [
            {
                internalType: 'bytes4',
                name: 'interfaceId',
                type: 'bytes4',
            },
            {
                internalType: 'uint64',
                name: 'version',
                type: 'uint64',
            },
        ],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [],
        name: 'owner',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_eid',
                type: 'uint32',
            },
        ],
        name: 'peers',
        outputs: [
            {
                internalType: 'bytes32',
                name: '',
                type: 'bytes32',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'preCrime',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'dstEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'to',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint256',
                        name: 'amountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'minAmountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'bytes',
                        name: 'extraOptions',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'composeMsg',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'oftCmd',
                        type: 'bytes',
                    },
                ],
                internalType: 'struct SendParam',
                name: '_sendParam',
                type: 'tuple',
            },
        ],
        name: 'quoteOFT',
        outputs: [
            {
                components: [
                    {
                        internalType: 'uint256',
                        name: 'minAmountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'maxAmountLD',
                        type: 'uint256',
                    },
                ],
                internalType: 'struct OFTLimit',
                name: 'oftLimit',
                type: 'tuple',
            },
            {
                components: [
                    {
                        internalType: 'int256',
                        name: 'feeAmountLD',
                        type: 'int256',
                    },
                    {
                        internalType: 'string',
                        name: 'description',
                        type: 'string',
                    },
                ],
                internalType: 'struct OFTFeeDetail[]',
                name: 'oftFeeDetails',
                type: 'tuple[]',
            },
            {
                components: [
                    {
                        internalType: 'uint256',
                        name: 'amountSentLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'amountReceivedLD',
                        type: 'uint256',
                    },
                ],
                internalType: 'struct OFTReceipt',
                name: 'oftReceipt',
                type: 'tuple',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'dstEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'to',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint256',
                        name: 'amountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'minAmountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'bytes',
                        name: 'extraOptions',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'composeMsg',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'oftCmd',
                        type: 'bytes',
                    },
                ],
                internalType: 'struct SendParam',
                name: '_sendParam',
                type: 'tuple',
            },
            {
                internalType: 'bool',
                name: '_payInLzToken',
                type: 'bool',
            },
        ],
        name: 'quoteSend',
        outputs: [
            {
                components: [
                    {
                        internalType: 'uint256',
                        name: 'nativeFee',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'lzTokenFee',
                        type: 'uint256',
                    },
                ],
                internalType: 'struct MessagingFee',
                name: 'msgFee',
                type: 'tuple',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_account',
                type: 'address',
            },
        ],
        name: 'removeFromWhitelist',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'renounceOwnership',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'dstEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'to',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint256',
                        name: 'amountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'minAmountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'bytes',
                        name: 'extraOptions',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'composeMsg',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'oftCmd',
                        type: 'bytes',
                    },
                ],
                internalType: 'struct SendParam',
                name: '_sendParam',
                type: 'tuple',
            },
            {
                components: [
                    {
                        internalType: 'uint256',
                        name: 'nativeFee',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'lzTokenFee',
                        type: 'uint256',
                    },
                ],
                internalType: 'struct MessagingFee',
                name: '_fee',
                type: 'tuple',
            },
            {
                internalType: 'address',
                name: '_refundAddress',
                type: 'address',
            },
        ],
        name: 'send',
        outputs: [
            {
                components: [
                    {
                        internalType: 'bytes32',
                        name: 'guid',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint64',
                        name: 'nonce',
                        type: 'uint64',
                    },
                    {
                        components: [
                            {
                                internalType: 'uint256',
                                name: 'nativeFee',
                                type: 'uint256',
                            },
                            {
                                internalType: 'uint256',
                                name: 'lzTokenFee',
                                type: 'uint256',
                            },
                        ],
                        internalType: 'struct MessagingFee',
                        name: 'fee',
                        type: 'tuple',
                    },
                ],
                internalType: 'struct MessagingReceipt',
                name: 'msgReceipt',
                type: 'tuple',
            },
            {
                components: [
                    {
                        internalType: 'uint256',
                        name: 'amountSentLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'amountReceivedLD',
                        type: 'uint256',
                    },
                ],
                internalType: 'struct OFTReceipt',
                name: 'oftReceipt',
                type: 'tuple',
            },
        ],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint16',
                name: '_feeBps',
                type: 'uint16',
            },
        ],
        name: 'setDefaultFeeBps',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_delegate',
                type: 'address',
            },
        ],
        name: 'setDelegate',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'eid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'uint16',
                        name: 'msgType',
                        type: 'uint16',
                    },
                    {
                        internalType: 'bytes',
                        name: 'options',
                        type: 'bytes',
                    },
                ],
                internalType: 'struct EnforcedOptionParam[]',
                name: '_enforcedOptions',
                type: 'tuple[]',
            },
        ],
        name: 'setEnforcedOptions',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_feeAddress',
                type: 'address',
            },
        ],
        name: 'setFeeAddress',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_dstEid',
                type: 'uint32',
            },
            {
                internalType: 'uint16',
                name: '_feeBps',
                type: 'uint16',
            },
            {
                internalType: 'bool',
                name: '_enabled',
                type: 'bool',
            },
        ],
        name: 'setFeeBps',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_msgInspector',
                type: 'address',
            },
        ],
        name: 'setMsgInspector',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_eid',
                type: 'uint32',
            },
            {
                internalType: 'bytes32',
                name: '_peer',
                type: 'bytes32',
            },
        ],
        name: 'setPeer',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_preCrime',
                type: 'address',
            },
        ],
        name: 'setPreCrime',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'sharedDecimals',
        outputs: [
            {
                internalType: 'uint8',
                name: '',
                type: 'uint8',
            },
        ],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [],
        name: 'token',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'newOwner',
                type: 'address',
            },
        ],
        name: 'transferOwnership',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_to',
                type: 'address',
            },
        ],
        name: 'withdrawFees',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
];
var BnbReceiveAbi = [
    {
        inputs: [
            {
                internalType: 'address',
                name: '_lzEndpoint',
                type: 'address',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'constructor',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'spender',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'allowance',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'needed',
                type: 'uint256',
            },
        ],
        name: 'ERC20InsufficientAllowance',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'sender',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'balance',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'needed',
                type: 'uint256',
            },
        ],
        name: 'ERC20InsufficientBalance',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'approver',
                type: 'address',
            },
        ],
        name: 'ERC20InvalidApprover',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'receiver',
                type: 'address',
            },
        ],
        name: 'ERC20InvalidReceiver',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'sender',
                type: 'address',
            },
        ],
        name: 'ERC20InvalidSender',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'spender',
                type: 'address',
            },
        ],
        name: 'ERC20InvalidSpender',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidBps',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidDelegate',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidEndpointCall',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidFeeOwner',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidInitialization',
        type: 'error',
    },
    {
        inputs: [],
        name: 'InvalidLocalDecimals',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'bytes',
                name: 'options',
                type: 'bytes',
            },
        ],
        name: 'InvalidOptions',
        type: 'error',
    },
    {
        inputs: [],
        name: 'LzTokenUnavailable',
        type: 'error',
    },
    {
        inputs: [],
        name: 'NoFeesToWithdraw',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: 'eid',
                type: 'uint32',
            },
        ],
        name: 'NoPeer',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'msgValue',
                type: 'uint256',
            },
        ],
        name: 'NotEnoughNative',
        type: 'error',
    },
    {
        inputs: [],
        name: 'NotInitializing',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'addr',
                type: 'address',
            },
        ],
        name: 'OnlyEndpoint',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: 'eid',
                type: 'uint32',
            },
            {
                internalType: 'bytes32',
                name: 'sender',
                type: 'bytes32',
            },
        ],
        name: 'OnlyPeer',
        type: 'error',
    },
    {
        inputs: [],
        name: 'OnlySelf',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'owner',
                type: 'address',
            },
        ],
        name: 'OwnableInvalidOwner',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'account',
                type: 'address',
            },
        ],
        name: 'OwnableUnauthorizedAccount',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'token',
                type: 'address',
            },
        ],
        name: 'SafeERC20FailedOperation',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'bytes',
                name: 'result',
                type: 'bytes',
            },
        ],
        name: 'SimulationResult',
        type: 'error',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'amountLD',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'minAmountLD',
                type: 'uint256',
            },
        ],
        name: 'SlippageExceeded',
        type: 'error',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'owner',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'spender',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'value',
                type: 'uint256',
            },
        ],
        name: 'Approval',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint16',
                name: 'feeBps',
                type: 'uint16',
            },
        ],
        name: 'DefaultFeeBpsSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'eid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'uint16',
                        name: 'msgType',
                        type: 'uint16',
                    },
                    {
                        internalType: 'bytes',
                        name: 'options',
                        type: 'bytes',
                    },
                ],
                indexed: false,
                internalType: 'struct EnforcedOptionParam[]',
                name: '_enforcedOptions',
                type: 'tuple[]',
            },
        ],
        name: 'EnforcedOptionSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'address',
                name: 'feeAddress',
                type: 'address',
            },
        ],
        name: 'FeeAddress',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint32',
                name: 'dstEid',
                type: 'uint32',
            },
            {
                indexed: false,
                internalType: 'uint16',
                name: 'feeBps',
                type: 'uint16',
            },
            {
                indexed: false,
                internalType: 'bool',
                name: 'enabled',
                type: 'bool',
            },
        ],
        name: 'FeeBpsSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'to',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amountLD',
                type: 'uint256',
            },
        ],
        name: 'FeeWithdrawn',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint64',
                name: 'version',
                type: 'uint64',
            },
        ],
        name: 'Initialized',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'address',
                name: 'inspector',
                type: 'address',
            },
        ],
        name: 'MsgInspectorSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'bytes32',
                name: 'guid',
                type: 'bytes32',
            },
            {
                indexed: false,
                internalType: 'uint32',
                name: 'srcEid',
                type: 'uint32',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'toAddress',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amountReceivedLD',
                type: 'uint256',
            },
        ],
        name: 'OFTReceived',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'bytes32',
                name: 'guid',
                type: 'bytes32',
            },
            {
                indexed: false,
                internalType: 'uint32',
                name: 'dstEid',
                type: 'uint32',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'fromAddress',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amountSentLD',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amountReceivedLD',
                type: 'uint256',
            },
        ],
        name: 'OFTSent',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'previousOwner',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'newOwner',
                type: 'address',
            },
        ],
        name: 'OwnershipTransferred',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint32',
                name: 'eid',
                type: 'uint32',
            },
            {
                indexed: false,
                internalType: 'bytes32',
                name: 'peer',
                type: 'bytes32',
            },
        ],
        name: 'PeerSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'address',
                name: 'preCrimeAddress',
                type: 'address',
            },
        ],
        name: 'PreCrimeSet',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'from',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'to',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'value',
                type: 'uint256',
            },
        ],
        name: 'Transfer',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'from',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'to',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'uint256',
                name: 'nonce',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'value',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'fromBalanceAfterTransfer',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'toBalanceAfterTransfer',
                type: 'uint256',
            },
        ],
        name: 'TransferEx',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'account',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'bool',
                name: 'isWhitelisted',
                type: 'bool',
            },
        ],
        name: 'WhitelistUpdated',
        type: 'event',
    },
    {
        inputs: [],
        name: 'BPS_DENOMINATOR',
        outputs: [
            {
                internalType: 'uint16',
                name: '',
                type: 'uint16',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'SEND',
        outputs: [
            {
                internalType: 'uint16',
                name: '',
                type: 'uint16',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'SEND_AND_CALL',
        outputs: [
            {
                internalType: 'uint16',
                name: '',
                type: 'uint16',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_account',
                type: 'address',
            },
        ],
        name: 'addToWhitelist',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'srcEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'sender',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint64',
                        name: 'nonce',
                        type: 'uint64',
                    },
                ],
                internalType: 'struct Origin',
                name: 'origin',
                type: 'tuple',
            },
        ],
        name: 'allowInitializePath',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'owner',
                type: 'address',
            },
            {
                internalType: 'address',
                name: 'spender',
                type: 'address',
            },
        ],
        name: 'allowance',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'approvalRequired',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'spender',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'value',
                type: 'uint256',
            },
        ],
        name: 'approve',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'account',
                type: 'address',
            },
        ],
        name: 'balanceOf',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_eid',
                type: 'uint32',
            },
            {
                internalType: 'uint16',
                name: '_msgType',
                type: 'uint16',
            },
            {
                internalType: 'bytes',
                name: '_extraOptions',
                type: 'bytes',
            },
        ],
        name: 'combineOptions',
        outputs: [
            {
                internalType: 'bytes',
                name: '',
                type: 'bytes',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'decimalConversionRate',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'decimals',
        outputs: [
            {
                internalType: 'uint8',
                name: '',
                type: 'uint8',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'defaultFeeBps',
        outputs: [
            {
                internalType: 'uint16',
                name: '',
                type: 'uint16',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'endpoint',
        outputs: [
            {
                internalType: 'contract ILayerZeroEndpointV2',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_eid',
                type: 'uint32',
            },
            {
                internalType: 'uint16',
                name: '_msgType',
                type: 'uint16',
            },
        ],
        name: 'enforcedOptions',
        outputs: [
            {
                internalType: 'bytes',
                name: '',
                type: 'bytes',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'feeBalance',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_dstEid',
                type: 'uint32',
            },
        ],
        name: 'feeBps',
        outputs: [
            {
                components: [
                    {
                        internalType: 'uint16',
                        name: 'feeBps',
                        type: 'uint16',
                    },
                    {
                        internalType: 'bool',
                        name: 'enabled',
                        type: 'bool',
                    },
                ],
                internalType: 'struct FeeConfig',
                name: '',
                type: 'tuple',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_dstEid',
                type: 'uint32',
            },
            {
                internalType: 'uint256',
                name: '_amount',
                type: 'uint256',
            },
        ],
        name: 'getFee',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'getFeeAddress',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'string',
                name: '_name',
                type: 'string',
            },
            {
                internalType: 'string',
                name: '_symbol',
                type: 'string',
            },
            {
                internalType: 'address',
                name: '_delegate',
                type: 'address',
            },
        ],
        name: 'initialize',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'srcEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'sender',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint64',
                        name: 'nonce',
                        type: 'uint64',
                    },
                ],
                internalType: 'struct Origin',
                name: '',
                type: 'tuple',
            },
            {
                internalType: 'bytes',
                name: '',
                type: 'bytes',
            },
            {
                internalType: 'address',
                name: '_sender',
                type: 'address',
            },
        ],
        name: 'isComposeMsgSender',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_eid',
                type: 'uint32',
            },
            {
                internalType: 'bytes32',
                name: '_peer',
                type: 'bytes32',
            },
        ],
        name: 'isPeer',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_account',
                type: 'address',
            },
        ],
        name: 'isWhitelisted',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'srcEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'sender',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint64',
                        name: 'nonce',
                        type: 'uint64',
                    },
                ],
                internalType: 'struct Origin',
                name: '_origin',
                type: 'tuple',
            },
            {
                internalType: 'bytes32',
                name: '_guid',
                type: 'bytes32',
            },
            {
                internalType: 'bytes',
                name: '_message',
                type: 'bytes',
            },
            {
                internalType: 'address',
                name: '_executor',
                type: 'address',
            },
            {
                internalType: 'bytes',
                name: '_extraData',
                type: 'bytes',
            },
        ],
        name: 'lzReceive',
        outputs: [],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        components: [
                            {
                                internalType: 'uint32',
                                name: 'srcEid',
                                type: 'uint32',
                            },
                            {
                                internalType: 'bytes32',
                                name: 'sender',
                                type: 'bytes32',
                            },
                            {
                                internalType: 'uint64',
                                name: 'nonce',
                                type: 'uint64',
                            },
                        ],
                        internalType: 'struct Origin',
                        name: 'origin',
                        type: 'tuple',
                    },
                    {
                        internalType: 'uint32',
                        name: 'dstEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'address',
                        name: 'receiver',
                        type: 'address',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'guid',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint256',
                        name: 'value',
                        type: 'uint256',
                    },
                    {
                        internalType: 'address',
                        name: 'executor',
                        type: 'address',
                    },
                    {
                        internalType: 'bytes',
                        name: 'message',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'extraData',
                        type: 'bytes',
                    },
                ],
                internalType: 'struct InboundPacket[]',
                name: '_packets',
                type: 'tuple[]',
            },
        ],
        name: 'lzReceiveAndRevert',
        outputs: [],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'srcEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'sender',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint64',
                        name: 'nonce',
                        type: 'uint64',
                    },
                ],
                internalType: 'struct Origin',
                name: '_origin',
                type: 'tuple',
            },
            {
                internalType: 'bytes32',
                name: '_guid',
                type: 'bytes32',
            },
            {
                internalType: 'bytes',
                name: '_message',
                type: 'bytes',
            },
            {
                internalType: 'address',
                name: '_executor',
                type: 'address',
            },
            {
                internalType: 'bytes',
                name: '_extraData',
                type: 'bytes',
            },
        ],
        name: 'lzReceiveSimulate',
        outputs: [],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'msgInspector',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'name',
        outputs: [
            {
                internalType: 'string',
                name: '',
                type: 'string',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '',
                type: 'uint32',
            },
            {
                internalType: 'bytes32',
                name: '',
                type: 'bytes32',
            },
        ],
        name: 'nextNonce',
        outputs: [
            {
                internalType: 'uint64',
                name: 'nonce',
                type: 'uint64',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'oApp',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'oAppVersion',
        outputs: [
            {
                internalType: 'uint64',
                name: 'senderVersion',
                type: 'uint64',
            },
            {
                internalType: 'uint64',
                name: 'receiverVersion',
                type: 'uint64',
            },
        ],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [],
        name: 'oftVersion',
        outputs: [
            {
                internalType: 'bytes4',
                name: 'interfaceId',
                type: 'bytes4',
            },
            {
                internalType: 'uint64',
                name: 'version',
                type: 'uint64',
            },
        ],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [],
        name: 'owner',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_eid',
                type: 'uint32',
            },
        ],
        name: 'peers',
        outputs: [
            {
                internalType: 'bytes32',
                name: '',
                type: 'bytes32',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'preCrime',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'dstEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'to',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint256',
                        name: 'amountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'minAmountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'bytes',
                        name: 'extraOptions',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'composeMsg',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'oftCmd',
                        type: 'bytes',
                    },
                ],
                internalType: 'struct SendParam',
                name: '_sendParam',
                type: 'tuple',
            },
        ],
        name: 'quoteOFT',
        outputs: [
            {
                components: [
                    {
                        internalType: 'uint256',
                        name: 'minAmountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'maxAmountLD',
                        type: 'uint256',
                    },
                ],
                internalType: 'struct OFTLimit',
                name: 'oftLimit',
                type: 'tuple',
            },
            {
                components: [
                    {
                        internalType: 'int256',
                        name: 'feeAmountLD',
                        type: 'int256',
                    },
                    {
                        internalType: 'string',
                        name: 'description',
                        type: 'string',
                    },
                ],
                internalType: 'struct OFTFeeDetail[]',
                name: 'oftFeeDetails',
                type: 'tuple[]',
            },
            {
                components: [
                    {
                        internalType: 'uint256',
                        name: 'amountSentLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'amountReceivedLD',
                        type: 'uint256',
                    },
                ],
                internalType: 'struct OFTReceipt',
                name: 'oftReceipt',
                type: 'tuple',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'dstEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'to',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint256',
                        name: 'amountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'minAmountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'bytes',
                        name: 'extraOptions',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'composeMsg',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'oftCmd',
                        type: 'bytes',
                    },
                ],
                internalType: 'struct SendParam',
                name: '_sendParam',
                type: 'tuple',
            },
            {
                internalType: 'bool',
                name: '_payInLzToken',
                type: 'bool',
            },
        ],
        name: 'quoteSend',
        outputs: [
            {
                components: [
                    {
                        internalType: 'uint256',
                        name: 'nativeFee',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'lzTokenFee',
                        type: 'uint256',
                    },
                ],
                internalType: 'struct MessagingFee',
                name: 'msgFee',
                type: 'tuple',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_account',
                type: 'address',
            },
        ],
        name: 'removeFromWhitelist',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'renounceOwnership',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'dstEid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'bytes32',
                        name: 'to',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint256',
                        name: 'amountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'minAmountLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'bytes',
                        name: 'extraOptions',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'composeMsg',
                        type: 'bytes',
                    },
                    {
                        internalType: 'bytes',
                        name: 'oftCmd',
                        type: 'bytes',
                    },
                ],
                internalType: 'struct SendParam',
                name: '_sendParam',
                type: 'tuple',
            },
            {
                components: [
                    {
                        internalType: 'uint256',
                        name: 'nativeFee',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'lzTokenFee',
                        type: 'uint256',
                    },
                ],
                internalType: 'struct MessagingFee',
                name: '_fee',
                type: 'tuple',
            },
            {
                internalType: 'address',
                name: '_refundAddress',
                type: 'address',
            },
        ],
        name: 'send',
        outputs: [
            {
                components: [
                    {
                        internalType: 'bytes32',
                        name: 'guid',
                        type: 'bytes32',
                    },
                    {
                        internalType: 'uint64',
                        name: 'nonce',
                        type: 'uint64',
                    },
                    {
                        components: [
                            {
                                internalType: 'uint256',
                                name: 'nativeFee',
                                type: 'uint256',
                            },
                            {
                                internalType: 'uint256',
                                name: 'lzTokenFee',
                                type: 'uint256',
                            },
                        ],
                        internalType: 'struct MessagingFee',
                        name: 'fee',
                        type: 'tuple',
                    },
                ],
                internalType: 'struct MessagingReceipt',
                name: 'msgReceipt',
                type: 'tuple',
            },
            {
                components: [
                    {
                        internalType: 'uint256',
                        name: 'amountSentLD',
                        type: 'uint256',
                    },
                    {
                        internalType: 'uint256',
                        name: 'amountReceivedLD',
                        type: 'uint256',
                    },
                ],
                internalType: 'struct OFTReceipt',
                name: 'oftReceipt',
                type: 'tuple',
            },
        ],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint16',
                name: '_feeBps',
                type: 'uint16',
            },
        ],
        name: 'setDefaultFeeBps',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_delegate',
                type: 'address',
            },
        ],
        name: 'setDelegate',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                components: [
                    {
                        internalType: 'uint32',
                        name: 'eid',
                        type: 'uint32',
                    },
                    {
                        internalType: 'uint16',
                        name: 'msgType',
                        type: 'uint16',
                    },
                    {
                        internalType: 'bytes',
                        name: 'options',
                        type: 'bytes',
                    },
                ],
                internalType: 'struct EnforcedOptionParam[]',
                name: '_enforcedOptions',
                type: 'tuple[]',
            },
        ],
        name: 'setEnforcedOptions',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_feeAddress',
                type: 'address',
            },
        ],
        name: 'setFeeAddress',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_dstEid',
                type: 'uint32',
            },
            {
                internalType: 'uint16',
                name: '_feeBps',
                type: 'uint16',
            },
            {
                internalType: 'bool',
                name: '_enabled',
                type: 'bool',
            },
        ],
        name: 'setFeeBps',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_msgInspector',
                type: 'address',
            },
        ],
        name: 'setMsgInspector',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint32',
                name: '_eid',
                type: 'uint32',
            },
            {
                internalType: 'bytes32',
                name: '_peer',
                type: 'bytes32',
            },
        ],
        name: 'setPeer',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_preCrime',
                type: 'address',
            },
        ],
        name: 'setPreCrime',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'sharedDecimals',
        outputs: [
            {
                internalType: 'uint8',
                name: '',
                type: 'uint8',
            },
        ],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [],
        name: 'symbol',
        outputs: [
            {
                internalType: 'string',
                name: '',
                type: 'string',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'token',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'totalSupply',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'to',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'value',
                type: 'uint256',
            },
        ],
        name: 'transfer',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'from',
                type: 'address',
            },
            {
                internalType: 'address',
                name: 'to',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'value',
                type: 'uint256',
            },
        ],
        name: 'transferFrom',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'newOwner',
                type: 'address',
            },
        ],
        name: 'transferOwnership',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_to',
                type: 'address',
            },
        ],
        name: 'withdrawFees',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
];
exports.gusdReceiveAddressAbiMap = (_20 = {},
    _20[Chains.polygon] = PolygonReceiveAbi,
    _20[Chains.binance] = BnbReceiveAbi,
    _20);
exports.EvmUniswapPoolAbi = [
    'function liquidity() external view returns (uint128)',
    'function slot0() external view returns (uint160, int24, uint16, uint16, uint16, uint8, bool)',
    {
        inputs: [{ internalType: 'int24', name: '', type: 'int24' }],
        name: 'ticks',
        outputs: [
            { internalType: 'uint128', name: 'liquidityGross', type: 'uint128' },
            { internalType: 'int128', name: 'liquidityNet', type: 'int128' },
            {
                internalType: 'uint256',
                name: 'feeGrowthOutside0X128',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'feeGrowthOutside1X128',
                type: 'uint256',
            },
            { internalType: 'int56', name: 'tickCumulativeOutside', type: 'int56' },
            {
                internalType: 'uint160',
                name: 'secondsPerLiquidityOutsideX128',
                type: 'uint160',
            },
            { internalType: 'uint32', name: 'secondsOutside', type: 'uint32' },
            { internalType: 'bool', name: 'initialized', type: 'bool' },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'token0',
        outputs: [{ internalType: 'address', name: '', type: 'address' }],
        stateMutability: 'view',
        type: 'function',
    },
];
exports.EvmErc20TokenAbi = [
    {
        constant: true,
        inputs: [],
        name: 'name',
        outputs: [{ name: '', type: 'string' }],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            { name: 'guy', type: 'address' },
            { name: 'wad', type: 'uint256' },
        ],
        name: 'approve',
        outputs: [{ name: '', type: 'bool' }],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'totalSupply',
        outputs: [{ name: '', type: 'uint256' }],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            { name: 'src', type: 'address' },
            { name: 'dst', type: 'address' },
            { name: 'wad', type: 'uint256' },
        ],
        name: 'transferFrom',
        outputs: [{ name: '', type: 'bool' }],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [{ name: 'wad', type: 'uint256' }],
        name: 'withdraw',
        outputs: [],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'decimals',
        outputs: [{ name: '', type: 'uint8' }],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [{ name: '', type: 'address' }],
        name: 'balanceOf',
        outputs: [{ name: '', type: 'uint256' }],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: true,
        inputs: [],
        name: 'symbol',
        outputs: [{ name: '', type: 'string' }],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    {
        constant: false,
        inputs: [
            { name: 'dst', type: 'address' },
            { name: 'wad', type: 'uint256' },
        ],
        name: 'transfer',
        outputs: [{ name: '', type: 'bool' }],
        payable: false,
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        constant: false,
        inputs: [],
        name: 'deposit',
        outputs: [],
        payable: true,
        stateMutability: 'payable',
        type: 'function',
    },
    {
        constant: true,
        inputs: [
            { name: '', type: 'address' },
            { name: '', type: 'address' },
        ],
        name: 'allowance',
        outputs: [{ name: '', type: 'uint256' }],
        payable: false,
        stateMutability: 'view',
        type: 'function',
    },
    { payable: true, stateMutability: 'payable', type: 'fallback' },
    {
        anonymous: false,
        inputs: [
            { indexed: true, name: 'src', type: 'address' },
            { indexed: true, name: 'guy', type: 'address' },
            { indexed: false, name: 'wad', type: 'uint256' },
        ],
        name: 'Approval',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            { indexed: true, name: 'src', type: 'address' },
            { indexed: true, name: 'dst', type: 'address' },
            { indexed: false, name: 'wad', type: 'uint256' },
        ],
        name: 'Transfer',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            { indexed: true, name: 'dst', type: 'address' },
            { indexed: false, name: 'wad', type: 'uint256' },
        ],
        name: 'Deposit',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            { indexed: true, name: 'src', type: 'address' },
            { indexed: false, name: 'wad', type: 'uint256' },
        ],
        name: 'Withdrawal',
        type: 'event',
    },
];
exports.EvmSwapRouterAbi = [
    {
        inputs: [
            { internalType: 'address', name: '_factory', type: 'address' },
            { internalType: 'address', name: '_WETH', type: 'address' },
        ],
        stateMutability: 'nonpayable',
        type: 'constructor',
    },
    {
        inputs: [],
        name: 'WETH',
        outputs: [{ internalType: 'address', name: '', type: 'address' }],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'address', name: 'tokenA', type: 'address' },
            { internalType: 'address', name: 'tokenB', type: 'address' },
            { internalType: 'uint256', name: 'amountADesired', type: 'uint256' },
            { internalType: 'uint256', name: 'amountBDesired', type: 'uint256' },
            { internalType: 'uint256', name: 'amountAMin', type: 'uint256' },
            { internalType: 'uint256', name: 'amountBMin', type: 'uint256' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'addLiquidity',
        outputs: [
            { internalType: 'uint256', name: 'amountA', type: 'uint256' },
            { internalType: 'uint256', name: 'amountB', type: 'uint256' },
            { internalType: 'uint256', name: 'liquidity', type: 'uint256' },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'address', name: 'token', type: 'address' },
            { internalType: 'uint256', name: 'amountTokenDesired', type: 'uint256' },
            { internalType: 'uint256', name: 'amountTokenMin', type: 'uint256' },
            { internalType: 'uint256', name: 'amountETHMin', type: 'uint256' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'addLiquidityETH',
        outputs: [
            { internalType: 'uint256', name: 'amountToken', type: 'uint256' },
            { internalType: 'uint256', name: 'amountETH', type: 'uint256' },
            { internalType: 'uint256', name: 'liquidity', type: 'uint256' },
        ],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'factory',
        outputs: [{ internalType: 'address', name: '', type: 'address' }],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountOut', type: 'uint256' },
            { internalType: 'uint256', name: 'reserveIn', type: 'uint256' },
            { internalType: 'uint256', name: 'reserveOut', type: 'uint256' },
        ],
        name: 'getAmountIn',
        outputs: [{ internalType: 'uint256', name: 'amountIn', type: 'uint256' }],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountIn', type: 'uint256' },
            { internalType: 'uint256', name: 'reserveIn', type: 'uint256' },
            { internalType: 'uint256', name: 'reserveOut', type: 'uint256' },
        ],
        name: 'getAmountOut',
        outputs: [{ internalType: 'uint256', name: 'amountOut', type: 'uint256' }],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountOut', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
        ],
        name: 'getAmountsIn',
        outputs: [
            { internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountIn', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
        ],
        name: 'getAmountsOut',
        outputs: [
            { internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountA', type: 'uint256' },
            { internalType: 'uint256', name: 'reserveA', type: 'uint256' },
            { internalType: 'uint256', name: 'reserveB', type: 'uint256' },
        ],
        name: 'quote',
        outputs: [{ internalType: 'uint256', name: 'amountB', type: 'uint256' }],
        stateMutability: 'pure',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'address', name: 'tokenA', type: 'address' },
            { internalType: 'address', name: 'tokenB', type: 'address' },
            { internalType: 'uint256', name: 'liquidity', type: 'uint256' },
            { internalType: 'uint256', name: 'amountAMin', type: 'uint256' },
            { internalType: 'uint256', name: 'amountBMin', type: 'uint256' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'removeLiquidity',
        outputs: [
            { internalType: 'uint256', name: 'amountA', type: 'uint256' },
            { internalType: 'uint256', name: 'amountB', type: 'uint256' },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'address', name: 'token', type: 'address' },
            { internalType: 'uint256', name: 'liquidity', type: 'uint256' },
            { internalType: 'uint256', name: 'amountTokenMin', type: 'uint256' },
            { internalType: 'uint256', name: 'amountETHMin', type: 'uint256' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'removeLiquidityETH',
        outputs: [
            { internalType: 'uint256', name: 'amountToken', type: 'uint256' },
            { internalType: 'uint256', name: 'amountETH', type: 'uint256' },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'address', name: 'token', type: 'address' },
            { internalType: 'uint256', name: 'liquidity', type: 'uint256' },
            { internalType: 'uint256', name: 'amountTokenMin', type: 'uint256' },
            { internalType: 'uint256', name: 'amountETHMin', type: 'uint256' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'removeLiquidityETHSupportingFeeOnTransferTokens',
        outputs: [{ internalType: 'uint256', name: 'amountETH', type: 'uint256' }],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'address', name: 'token', type: 'address' },
            { internalType: 'uint256', name: 'liquidity', type: 'uint256' },
            { internalType: 'uint256', name: 'amountTokenMin', type: 'uint256' },
            { internalType: 'uint256', name: 'amountETHMin', type: 'uint256' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
            { internalType: 'bool', name: 'approveMax', type: 'bool' },
            { internalType: 'uint8', name: 'v', type: 'uint8' },
            { internalType: 'bytes32', name: 'r', type: 'bytes32' },
            { internalType: 'bytes32', name: 's', type: 'bytes32' },
        ],
        name: 'removeLiquidityETHWithPermit',
        outputs: [
            { internalType: 'uint256', name: 'amountToken', type: 'uint256' },
            { internalType: 'uint256', name: 'amountETH', type: 'uint256' },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'address', name: 'token', type: 'address' },
            { internalType: 'uint256', name: 'liquidity', type: 'uint256' },
            { internalType: 'uint256', name: 'amountTokenMin', type: 'uint256' },
            { internalType: 'uint256', name: 'amountETHMin', type: 'uint256' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
            { internalType: 'bool', name: 'approveMax', type: 'bool' },
            { internalType: 'uint8', name: 'v', type: 'uint8' },
            { internalType: 'bytes32', name: 'r', type: 'bytes32' },
            { internalType: 'bytes32', name: 's', type: 'bytes32' },
        ],
        name: 'removeLiquidityETHWithPermitSupportingFeeOnTransferTokens',
        outputs: [{ internalType: 'uint256', name: 'amountETH', type: 'uint256' }],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'address', name: 'tokenA', type: 'address' },
            { internalType: 'address', name: 'tokenB', type: 'address' },
            { internalType: 'uint256', name: 'liquidity', type: 'uint256' },
            { internalType: 'uint256', name: 'amountAMin', type: 'uint256' },
            { internalType: 'uint256', name: 'amountBMin', type: 'uint256' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
            { internalType: 'bool', name: 'approveMax', type: 'bool' },
            { internalType: 'uint8', name: 'v', type: 'uint8' },
            { internalType: 'bytes32', name: 'r', type: 'bytes32' },
            { internalType: 'bytes32', name: 's', type: 'bytes32' },
        ],
        name: 'removeLiquidityWithPermit',
        outputs: [
            { internalType: 'uint256', name: 'amountA', type: 'uint256' },
            { internalType: 'uint256', name: 'amountB', type: 'uint256' },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountOut', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'swapETHForExactTokens',
        outputs: [
            { internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' },
        ],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountOutMin', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'swapExactETHForTokens',
        outputs: [
            { internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' },
        ],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountOutMin', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'swapExactETHForTokensSupportingFeeOnTransferTokens',
        outputs: [],
        stateMutability: 'payable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountIn', type: 'uint256' },
            { internalType: 'uint256', name: 'amountOutMin', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'swapExactTokensForETH',
        outputs: [
            { internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountIn', type: 'uint256' },
            { internalType: 'uint256', name: 'amountOutMin', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'swapExactTokensForETHSupportingFeeOnTransferTokens',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountIn', type: 'uint256' },
            { internalType: 'uint256', name: 'amountOutMin', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'swapExactTokensForTokens',
        outputs: [
            { internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountIn', type: 'uint256' },
            { internalType: 'uint256', name: 'amountOutMin', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'swapExactTokensForTokensSupportingFeeOnTransferTokens',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountOut', type: 'uint256' },
            { internalType: 'uint256', name: 'amountInMax', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'swapTokensForExactETH',
        outputs: [
            { internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            { internalType: 'uint256', name: 'amountOut', type: 'uint256' },
            { internalType: 'uint256', name: 'amountInMax', type: 'uint256' },
            { internalType: 'address[]', name: 'path', type: 'address[]' },
            { internalType: 'address', name: 'to', type: 'address' },
            { internalType: 'uint256', name: 'deadline', type: 'uint256' },
        ],
        name: 'swapTokensForExactTokens',
        outputs: [
            { internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    { stateMutability: 'payable', type: 'receive' },
];
exports.StepnGoStakingAbi = window.testAmony
    ? [
        {
            inputs: [
                { internalType: 'address', name: '_tokenAddress', type: 'address' },
                { internalType: 'uint32', name: '_unlockTime', type: 'uint32' },
                { internalType: 'uint256', name: '_perTicketPrice', type: 'uint256' },
                {
                    internalType: 'uint32',
                    name: '_roundTicketsLimit',
                    type: 'uint32',
                },
            ],
            stateMutability: 'nonpayable',
            type: 'constructor',
        },
        {
            anonymous: false,
            inputs: [
                {
                    indexed: true,
                    internalType: 'address',
                    name: '_user',
                    type: 'address',
                },
                {
                    indexed: false,
                    internalType: 'uint256',
                    name: '_totalAmount',
                    type: 'uint256',
                },
            ],
            name: 'Claimed',
            type: 'event',
        },
        {
            anonymous: false,
            inputs: [
                {
                    indexed: false,
                    internalType: 'uint32',
                    name: '_round',
                    type: 'uint32',
                },
                {
                    indexed: false,
                    internalType: 'uint32',
                    name: '_ticketNo',
                    type: 'uint32',
                },
            ],
            name: 'RoundEndTag',
            type: 'event',
        },
        {
            anonymous: false,
            inputs: [
                {
                    indexed: true,
                    internalType: 'address',
                    name: '_user',
                    type: 'address',
                },
                {
                    indexed: false,
                    internalType: 'uint32',
                    name: '_beginTicketNo',
                    type: 'uint32',
                },
                {
                    indexed: false,
                    internalType: 'uint32[]',
                    name: '_rounds',
                    type: 'uint32[]',
                },
                {
                    indexed: false,
                    internalType: 'uint32[]',
                    name: '_tickets',
                    type: 'uint32[]',
                },
                {
                    indexed: false,
                    internalType: 'uint32',
                    name: '_totalTickets',
                    type: 'uint32',
                },
            ],
            name: 'Staked',
            type: 'event',
        },
        {
            inputs: [],
            name: 'claim',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [],
            name: 'owner',
            outputs: [{ internalType: 'address', name: '', type: 'address' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [],
            name: 'perTicketPrice',
            outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            name: 'roundEndTag',
            outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            name: 'roundEndTimes',
            outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [],
            name: 'roundTicketsLimit',
            outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [{ internalType: 'uint32', name: '_round', type: 'uint32' }],
            name: 'setRoundEndTag',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [
                { internalType: 'uint32[]', name: '_rounds', type: 'uint32[]' },
                { internalType: 'uint32[]', name: '_endTimes', type: 'uint32[]' },
            ],
            name: 'setRoundEndTimes',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [
                { internalType: 'uint32[]', name: '_rounds', type: 'uint32[]' },
                { internalType: 'uint32[]', name: '_tickets', type: 'uint32[]' },
            ],
            name: 'stake',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [{ internalType: 'address', name: '', type: 'address' }],
            name: 'stakesAmounts',
            outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [],
            name: 'stakingToken',
            outputs: [
                { internalType: 'contract IERC20', name: '', type: 'address' },
            ],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [],
            name: 'ticketNo',
            outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [],
            name: 'unlockTime',
            outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [
                { internalType: 'address', name: '_newOwner', type: 'address' },
            ],
            name: 'updateOwner',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [{ internalType: 'uint32', name: '_newLimit', type: 'uint32' }],
            name: 'updateRoundTicketsLimit',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [
                { internalType: 'address', name: '', type: 'address' },
                { internalType: 'uint32', name: '', type: 'uint32' },
            ],
            name: 'userRoundTickets',
            outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            stateMutability: 'view',
            type: 'function',
        },
    ]
    : [
        {
            inputs: [
                { internalType: 'address', name: '_tokenAddress', type: 'address' },
                { internalType: 'uint32', name: '_unlockTime', type: 'uint32' },
                { internalType: 'uint256', name: '_perTicketPrice', type: 'uint256' },
                {
                    internalType: 'uint32',
                    name: '_roundTicketsLimit',
                    type: 'uint32',
                },
            ],
            stateMutability: 'nonpayable',
            type: 'constructor',
        },
        {
            anonymous: false,
            inputs: [
                {
                    indexed: true,
                    internalType: 'address',
                    name: '_user',
                    type: 'address',
                },
                {
                    indexed: false,
                    internalType: 'uint256',
                    name: '_totalAmount',
                    type: 'uint256',
                },
            ],
            name: 'Claimed',
            type: 'event',
        },
        {
            anonymous: false,
            inputs: [
                {
                    indexed: false,
                    internalType: 'uint32',
                    name: '_round',
                    type: 'uint32',
                },
                {
                    indexed: false,
                    internalType: 'uint32',
                    name: '_ticketNo',
                    type: 'uint32',
                },
            ],
            name: 'RoundEndTag',
            type: 'event',
        },
        {
            anonymous: false,
            inputs: [
                {
                    indexed: true,
                    internalType: 'address',
                    name: '_user',
                    type: 'address',
                },
                {
                    indexed: false,
                    internalType: 'uint32',
                    name: '_beginTicketNo',
                    type: 'uint32',
                },
                {
                    indexed: false,
                    internalType: 'uint32[]',
                    name: '_rounds',
                    type: 'uint32[]',
                },
                {
                    indexed: false,
                    internalType: 'uint32[]',
                    name: '_tickets',
                    type: 'uint32[]',
                },
                {
                    indexed: false,
                    internalType: 'uint32',
                    name: '_totalTickets',
                    type: 'uint32',
                },
            ],
            name: 'Staked',
            type: 'event',
        },
        {
            inputs: [],
            name: 'claim',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [],
            name: 'owner',
            outputs: [{ internalType: 'address', name: '', type: 'address' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [],
            name: 'perTicketPrice',
            outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            name: 'roundEndTag',
            outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            name: 'roundEndTimes',
            outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [],
            name: 'roundTicketsLimit',
            outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [{ internalType: 'uint32', name: '_round', type: 'uint32' }],
            name: 'setRoundEndTag',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [
                { internalType: 'uint32[]', name: '_rounds', type: 'uint32[]' },
                { internalType: 'uint32[]', name: '_endTimes', type: 'uint32[]' },
            ],
            name: 'setRoundEndTimes',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [
                { internalType: 'uint32[]', name: '_rounds', type: 'uint32[]' },
                { internalType: 'uint32[]', name: '_tickets', type: 'uint32[]' },
            ],
            name: 'stake',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [{ internalType: 'address', name: '', type: 'address' }],
            name: 'stakesAmounts',
            outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [],
            name: 'stakingToken',
            outputs: [
                { internalType: 'contract IERC20', name: '', type: 'address' },
            ],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [],
            name: 'ticketNo',
            outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [],
            name: 'unlockTime',
            outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            stateMutability: 'view',
            type: 'function',
        },
        {
            inputs: [
                { internalType: 'address', name: '_newOwner', type: 'address' },
            ],
            name: 'updateOwner',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [{ internalType: 'uint32', name: '_newLimit', type: 'uint32' }],
            name: 'updateRoundTicketsLimit',
            outputs: [],
            stateMutability: 'nonpayable',
            type: 'function',
        },
        {
            inputs: [
                { internalType: 'address', name: '', type: 'address' },
                { internalType: 'uint32', name: '', type: 'uint32' },
            ],
            name: 'userRoundTickets',
            outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
            stateMutability: 'view',
            type: 'function',
        },
    ];