import { TransactionBuilder } from "@orca-so/common-sdk";
import { Address } from "@project-serum/anchor";
import { PublicKey } from "@solana/web3.js";
import { WhirlpoolContext } from "../context";
import { AccountFetcher } from "../network/public";
import { Position, Whirlpool, WhirlpoolClient } from "../whirlpool-client";
export declare class WhirlpoolClientImpl implements WhirlpoolClient {
    readonly ctx: WhirlpoolContext;
    constructor(ctx: WhirlpoolContext);
    getContext(): WhirlpoolContext;
    getFetcher(): AccountFetcher;
    getPool(poolAddress: Address, refresh?: boolean): Promise<Whirlpool>;
    getPools(poolAddresses: Address[], refresh?: boolean): Promise<Whirlpool[]>;
    getAllPositionsOf(owner: PublicKey, refresh?: boolean): Promise<Position[]>;
    getPosition(positionAddress: Address, refresh?: boolean): Promise<Position>;
    getPositions(positionAddresses: Address[], refresh?: boolean): Promise<Record<string, Position | null>>;
    createPool(whirlpoolsConfig: Address, tokenMintA: Address, tokenMintB: Address, tickSpacing: number, initialTick: number, funder: Address, refresh?: boolean): Promise<{
        poolKey: PublicKey;
        tx: TransactionBuilder;
    }>;
    collectFeesAndRewardsForPositions(positionAddresses: Address[], refresh?: boolean | undefined): Promise<TransactionBuilder[]>;
    collectProtocolFeesForPools(poolAddresses: Address[]): Promise<TransactionBuilder>;
}
