import { TransactionSigner } from "@solana/kit";
import { SVMProvider, SolanaTransaction } from "../../arch/svm";
import { RelayData } from "../../interfaces";
import { Address, BigNumber, BigNumberish, SvmAddress, TransactionCostEstimate } from "../../utils";
import { Logger, QueryInterface } from "../relayFeeCalculator";
import { SymbolMappingType } from "./";
export declare class SvmQuery implements QueryInterface {
    readonly provider: SVMProvider;
    readonly symbolMapping: SymbolMappingType;
    readonly spokePool: SvmAddress;
    readonly simulatedRelayerAddress: SvmAddress;
    readonly logger: Logger;
    readonly coingeckoProApiKey?: string | undefined;
    readonly fixedGasPrice?: BigNumberish | undefined;
    readonly coingeckoBaseCurrency: string;
    protected computeUnitEstimator: import("@solana-program/compute-budget/dist/types/estimateComputeLimitInternal").EstimateComputeUnitLimitFactoryFunction;
    constructor(provider: SVMProvider, symbolMapping: SymbolMappingType, spokePool: SvmAddress, simulatedRelayerAddress: SvmAddress, logger: Logger, coingeckoProApiKey?: string | undefined, fixedGasPrice?: BigNumberish | undefined, coingeckoBaseCurrency?: string);
    getGasCosts(relayData: RelayData & {
        destinationChainId: number;
    }, relayer?: Address, options?: Partial<{
        gasPrice: BigNumberish;
        gasUnits: BigNumberish;
        baseFeeMultiplier: BigNumber;
        priorityFeeMultiplier: BigNumber;
    }>): Promise<TransactionCostEstimate>;
    getNativeGasCost(deposit: RelayData & {
        destinationChainId: number;
    }, relayer?: Address): Promise<BigNumber>;
    getAuxiliaryNativeTokenCost(deposit: RelayData): BigNumber;
    protected getFillRelayTx(relayData: Omit<RelayData, "recipient" | "outputToken"> & {
        destinationChainId: number;
        recipient: SvmAddress;
        outputToken: SvmAddress;
    }, signer: TransactionSigner, repaymentChainId: number, repaymentAddress: Address): Promise<SolanaTransaction>;
    getTokenPrice(tokenSymbol: string): Promise<number>;
    getTokenDecimals(tokenSymbol: string): number;
    estimateComputeUnits(relayData: RelayData & {
        destinationChainId: number;
        recipient: SvmAddress;
        outputToken: SvmAddress;
        exclusiveRelayer: SvmAddress;
    }, relayer: SvmAddress, repaymentChainId: number, repaymentAddress: SvmAddress): Promise<bigint>;
}
