import { Address } from "@project-serum/anchor";
import Decimal from "decimal.js";
import { PoolData } from "../types";
import { TokenUSDPrices } from "../utils/token-price";
import { UserPositionData } from "../types";
import { WhirlpoolContext } from "../context";
export declare class OrcaWhirlpoolClient {
    readonly ctx: WhirlpoolContext;
    constructor(context: WhirlpoolContext);
    /**
     * Use on-chain dex data to derive usd prices for tokens.
     *
     * @param poolAddresses pools to be used for price discovery
     * @param baseTokenMint a token mint with known stable usd price (e.g. USDC)
     * @param baseTokenUSDPrice baseTokenMint's usd price. defaults to 1, assuming `baseTokenMint` is a USD stable coin
     * @param otherBaseTokenMints optional list of token mints to prioritize as base
     * @param refresh defaults to refreshing the cache
     */
    getTokenPrices(poolAddresses: Address[], baseTokenMint: Address, baseTokenUSDPrice?: Decimal, otherBaseTokenMints?: Address[], refresh?: boolean): Promise<TokenUSDPrices>;
    /**
     * Fetch position data owned by the wallet address.
     *
     * @param walletAddress wallet address
     * @param refresh defaults to refreshing the cache
     * @returns positions owned by the wallet address
     */
    getUserPositions(walletAddress: Address, refresh?: boolean): Promise<Record<string, UserPositionData>>;
    /**
     * Fetch list of pool data.
     *
     * @param poolAddresses list of pools to retrieve
     * @param refresh defaults to refreshing the cache
     * @returns list of pool data
     */
    getPools(poolAddresses: Address[], refresh?: boolean): Promise<Record<string, PoolData>>;
    /**
     * Fetch pool data.
     *
     * @param poolAddress pool address
     * @param refresh defaults to refreshing the cache
     * @returns pool data
     */
    getPool(poolAddress: Address, refresh?: boolean): Promise<PoolData | null>;
}
