import { SpokePool } from "../../typechain";
import { L2Provider } from "@eth-optimism/sdk/dist/interfaces/l2-provider";
import { providers } from "ethers";
import { BigNumberish } from "../../utils";
import { Logger, QueryInterface } from "../relayFeeCalculator";
declare type Provider = providers.Provider;
declare type OptimismProvider = L2Provider<Provider>;
declare type SymbolMappingType = Record<string, {
    addresses: Record<number, string>;
    decimals: number;
}>;
/**
 * Default address to use when simulating the gas cost of filling a relay.
 */
export declare const DEFAULT_SIMULATED_RELAYER_ADDRESS = "0x893d0D70AD97717052E3AA8903D9615804167759";
/**
 * A unified QueryBase for querying gas costs, token prices, and decimals of various tokens
 * on a blockchain.
 */
export default abstract class QueryBase implements QueryInterface {
    readonly provider: Provider | OptimismProvider;
    readonly symbolMapping: SymbolMappingType;
    readonly spokePoolAddress: string;
    readonly usdcAddress: string;
    readonly simulatedRelayerAddress: string;
    readonly gasMarkup: number;
    readonly logger: Logger;
    readonly coingeckoProApiKey?: string | undefined;
    readonly fixedGasPrice?: string | number | bigint | import("ethers").BigNumber | import("ethers").Bytes | undefined;
    readonly coingeckoBaseCurrency: string;
    readonly spokePool: SpokePool;
    /**
     * Instantiates a QueryBase instance
     * @param provider A valid Ethers.js provider
     * @param symbolMapping A mapping to valid ERC20 tokens and their respective characteristics
     * @param spokePoolAddress The valid address of the Spoke Pool deployment
     * @param usdcAddress The valid token address of the USDC ERC-20 token
     * @param simulatedRelayerAddress The address that these queries will reference as the sender. Note: This address must be approved for USDC
     * @param gasMarkup A multiplier that is applied to the total gas estimate
     * @param logger A logging utility to report logs
     * @param coingeckoProApiKey An optional CoinGecko API key that links to a PRO account
     * @param fixedGasPrice Overrides the gas price with a fixed value. Note: primarily used for the Boba blockchain
     * @param coingeckoBaseCurrency The basis currency that CoinGecko will use to resolve pricing
     */
    protected constructor(provider: Provider | OptimismProvider, symbolMapping: SymbolMappingType, spokePoolAddress: string, usdcAddress: string, simulatedRelayerAddress: string, gasMarkup: number, logger: Logger, coingeckoProApiKey?: string | undefined, fixedGasPrice?: string | number | bigint | import("ethers").BigNumber | import("ethers").Bytes | undefined, coingeckoBaseCurrency?: string);
    /**
     * Retrieves the current gas costs of performing a fillRelay contract at the referenced Spoke Pool
     * @returns The gas estimate for this function call (multplied with the optional buffer)
     */
    getGasCosts(): Promise<BigNumberish>;
    /**
     * Retrieves the current price of a token
     * @param tokenSymbol A valid [CoinGecko-ID](https://api.coingecko.com/api/v3/coins/list)
     * @returns The resolved token price within the specified coingeckoBaseCurrency
     */
    getTokenPrice(tokenSymbol: string): Promise<number>;
    /**
     * Resolves the number of decimal places a token can have
     * @param tokenSymbol A valid Across-Enabled Token ID
     * @returns The number of decimals of precision for the corresponding tokenSymbol
     */
    getTokenDecimals(tokenSymbol: string): number;
}
export {};
