import { Connection, PublicKey, Transaction } from '@solana/web3.js';
import { SolanaCluster } from '@hubbleprotocol/hubble-config';
import Decimal from 'decimal.js';
import { RouteInfo } from '@jup-ag/core';
import { DeserializedVersionedTransaction } from '../utils';
import { SwapResponse } from '@jup-ag/api';
export type SwapTransactionsResponse = {
    setupTransaction: string | undefined;
    swapTransaction: string;
    cleanupTransaction: string | undefined;
};
export declare class JupService {
    private readonly _connection;
    private readonly _cluster;
    constructor(connection: Connection, cluster: SolanaCluster);
    static getSwapTransactions: (route: RouteInfo, walletPublicKey: PublicKey, wrapUnwrapSOL?: boolean, asLegacyTransaction?: boolean) => Promise<SwapTransactionsResponse>;
    static getBestRoute: (amount: Decimal, inputMint: PublicKey, outputMint: PublicKey, slippageBps: number, mode?: string, asLegacyTransaction?: boolean) => Promise<RouteInfo>;
    static getAllRoutesV4: (amount: Decimal, inputMint: PublicKey, outputMint: PublicKey, slippageBps: number, mode?: string, asLegacyTransaction?: boolean) => Promise<RouteInfo[]>;
    static getBestRouteV6: (userPublicKey: PublicKey, amount: Decimal, inputMint: PublicKey, outputMint: PublicKey, slippageBps: number, asLegacyTransaction?: boolean, maxAccounts?: number) => Promise<SwapResponse>;
    getPrice(inputMint: PublicKey | string, outputMint: PublicKey | string): Promise<number>;
    static buildTransactionsFromSerialized: (serializedTransactions: Array<string | undefined>) => Transaction[];
    static deserealizeVersionedTransactions: (connection: Connection, serializedTransactions: Array<string | undefined>) => Promise<DeserializedVersionedTransaction>;
    static getLookupTableAccount: (connection: Connection, address: string | PublicKey) => Promise<import("@solana/web3.js").AddressLookupTableAccount | null>;
}
