import { BlockTag } from "@ethersproject/abstract-provider";
import { providers, Signer } from "ethers";
import { L1TokenInfo, TokenInfo } from "../interfaces";
import { BigNumber } from "./BigNumberUtils";
import { Address, EvmAddress } from "./AddressUtils";
type SignerOrProvider = providers.Provider | Signer;
export declare function fetchTokenInfo(address: string, signerOrProvider: SignerOrProvider): Promise<L1TokenInfo>;
export declare const getL2TokenAddresses: (l1TokenAddress: string, l1ChainId?: number) => {
    [chainId: number]: string;
} | undefined;
/**
 * Resolve a token symbol to an L1Token description on a particular chain ID.
 * @notice Not to be confused with the HubPool's internal view on the supported origin/destination token for a chain.
 * @param symbol Symbol to query.
 * @param chainId Chain ID to query on.
 * @returns Symbol, decimals and contract address on the requested chain.
 */
export declare function resolveSymbolOnChain(chainId: number, symbol: string): TokenInfo;
/**
 * Returns the contract address for a given token symbol and chainId.
 * @param symbol A case-insensitive token symbol.
 * @param chainId The chainId to resolve the contract address for.
 * @param tokenMapping A parameter to determine where to source token information. Defaults to the constants variant.
 * @returns The contract address for the given token symbol and chainId, or undefined if the token symbol is not supported.
 */
export declare const resolveContractFromSymbol: (symbol: string, chainId: string, tokenMapping?: {
    ACX: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    ARB: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    AZERO: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    BADGER: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    BAL: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    BNB: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    BOBA: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    CAKE: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    DAI: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    ETH: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    ezETH: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    GHO: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    GRASS: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    LSK: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    MATIC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    OP: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    POOL: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    SNX: {
        name: string;
        symbol: string;
        decimals: number;
        /**
         * Retrieves the ERC20 balance for a given address and token address.
         * @param address The address to retrieve the balance for.
         * @param tokenAddress The token address
         * @param signerOrProvider A valid ethers.js Signer or Provider object.
         * @param blockTag The block tag to retrieve the balance at.
         * @returns The balance of the given address for the given token address.
         */
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    SOL: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
            133268194659241: string;
        };
        coingeckoId: string;
    };
    "TATARA-USDC": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    "TATARA-USDS": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    "TATARA-USDT": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    "TATARA-WBTC": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    UMA: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    USDB: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    USDC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
            133268194659241: string;
        };
        coingeckoId: string;
    };
    "USDC.e": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    USDbC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    USDzC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    "USDC-BNB": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        l1TokenDecimals: number;
        coingeckoId: string;
    };
    USDT: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    "USDT-BNB": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        l1TokenDecimals: number;
        coingeckoId: string;
    };
    VLR: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    }; /**
     * @notice Returns the l1 token address matching the given l2TokenAddress and chainId.
     */
    WAZERO: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WBNB: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WBTC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WETH: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WGHO: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WGRASS: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WLD: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WMATIC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WSOL: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
            133268194659241: string;
        };
        coingeckoId: string;
    };
    XYZ: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
}) => string | undefined;
export declare function getCoingeckoTokenIdByAddress(address: string, chainId: number): string;
/**
 * Retrieves the ERC20 balance for a given address and token address.
 * @param address The address to retrieve the balance for.
 * @param tokenAddress The token address
 * @param signerOrProvider A valid ethers.js Signer or Provider object.
 * @param blockTag The block tag to retrieve the balance at.
 * @returns The balance of the given address for the given token address.
 */
export declare function getTokenBalance(address: string, tokenAddress: string, signerOrProvider: SignerOrProvider, blockTag?: BlockTag): Promise<BigNumber>;
export declare function isBridgedUsdc(tokenSymbol: string): boolean;
export declare function isStablecoin(tokenSymbol: string): boolean;
/**
 * @notice Returns the Token info for the token mapping in TOKEN_SYMBOLS_MAP matching the given l2TokenAddress
 * and chainId. If the chain is the hub chain, then will remap the L1 token to its equivalent L1 token symbol for example
 * it will always return a token info with symbol USDC and never USDC.e if chainId = mainnet.
 * @param l2Token Address instance.
 * @param chainId ChainId for l2Token address.
 * @param tokenMapping Optional custom token mapping.
 * @returns TokenInfo object.
 */
export declare function getTokenInfo(l2Token: Address, chainId: number, tokenMapping?: {
    ACX: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    ARB: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    AZERO: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    BADGER: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    BAL: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    BNB: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    BOBA: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    CAKE: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    DAI: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    ETH: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    ezETH: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    GHO: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    GRASS: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    LSK: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    MATIC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    OP: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    POOL: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    SNX: {
        name: string;
        symbol: string;
        decimals: number;
        /**
         * Retrieves the ERC20 balance for a given address and token address.
         * @param address The address to retrieve the balance for.
         * @param tokenAddress The token address
         * @param signerOrProvider A valid ethers.js Signer or Provider object.
         * @param blockTag The block tag to retrieve the balance at.
         * @returns The balance of the given address for the given token address.
         */
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    SOL: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
            133268194659241: string;
        };
        coingeckoId: string;
    };
    "TATARA-USDC": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    "TATARA-USDS": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    "TATARA-USDT": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    "TATARA-WBTC": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    UMA: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    USDB: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    USDC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
            133268194659241: string;
        };
        coingeckoId: string;
    };
    "USDC.e": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    USDbC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    USDzC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    "USDC-BNB": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        l1TokenDecimals: number;
        coingeckoId: string;
    };
    USDT: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    "USDT-BNB": {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        l1TokenDecimals: number;
        coingeckoId: string;
    };
    VLR: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    }; /**
     * @notice Returns the l1 token address matching the given l2TokenAddress and chainId.
     */
    WAZERO: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WBNB: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WBTC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WETH: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WGHO: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WGRASS: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WLD: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WMATIC: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
    WSOL: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
            133268194659241: string;
        };
        coingeckoId: string;
    };
    XYZ: {
        name: string;
        symbol: string;
        decimals: number;
        addresses: {
            [x: number]: string;
        };
        coingeckoId: string;
    };
}): TokenInfo;
/**
 * Get the USDC symbol for the given token address and chain ID.
 * @param l2Token A Web3 token address (not case sensitive)
 * @param chainId A chain Id to reference
 * @returns Either USDC (if native) or USDbC/USDC.e (if bridged) or undefined if the token address is not recognized.
 */
export declare function getUsdcSymbol(l2Token: Address, chainId: number): string | undefined;
/**
 * @notice Returns the l1 token address matching the given l2TokenAddress and chainId.
 */
export declare function getL1TokenAddress(l2TokenAddress: Address, chainId: number): EvmAddress;
export {};
//# sourceMappingURL=TokenUtils.d.ts.map