import { Address, ProgramDerivedAddress, Rpc, SolanaRpcApi } from '@solana/kit';
import { Pool, RaydiumPoolsResponse } from './RaydiumPoolsResponse';
import Decimal from 'decimal.js';
import { WhirlpoolAprApy } from './WhirlpoolAprApy';
import { type WhirlpoolStrategy } from '../@codegen/kliquidity/accounts';
import { GenericPoolInfo, LiquidityDistribution } from '../utils';
import { ApiV3PoolInfoConcentratedItem, ApiV3PoolInfoCountItem, ClmmParsedRpcData, ComputeClmmPoolInfo, ReturnTypeFetchExBitmaps, ReturnTypeFetchMultipleMintInfos } from '@raydium-io/raydium-sdk-v2/lib';
import { ReturnTypeGetTickPrice } from '../utils/raydiumSdkCompat';
import { Logger } from '../utils/Logger';
export declare class RaydiumService {
    private readonly _rpc;
    private readonly _raydiumProgramId;
    private readonly _logger;
    constructor(rpc: Rpc<SolanaRpcApi>, raydiumProgramId?: Address, logger?: Logger);
    getRaydiumProgramId(): Address;
    getRaydiumWhirlpools(): Promise<RaydiumPoolsResponse>;
    getRaydiumPoolInfo(poolPubkey: Address, poolStats?: RaydiumPoolStatsSource): Promise<ApiV3PoolInfoConcentratedItem>;
    getRaydiumApiPoolInfo(poolId: string): Promise<ApiV3PoolInfoConcentratedItem | undefined>;
    getRaydiumPoolLiquidityDistribution(pool: Address, keepOrder?: boolean, lowestTick?: number, highestTick?: number): Promise<LiquidityDistribution>;
    getStrategyWhirlpoolPoolAprApy: (strategy: WhirlpoolStrategy, pools?: Pool[]) => Promise<WhirlpoolAprApy>;
    getRaydiumPositionAprApy: (poolPubkey: Address, priceLower: Decimal, priceUpper: Decimal, pools?: Pool[]) => Promise<WhirlpoolAprApy>;
    getGenericPoolInfo(poolPubkey: Address, pools?: Pool[]): Promise<GenericPoolInfo>;
    getPositionsCountByPool(pool: Address): Promise<number>;
    getTickPrice(tick: number, tokenADecimals: number, tokenBDecimals: number, baseIn?: boolean): ReturnTypeGetTickPrice;
    getRpcClmmPoolInfo(poolId: string): Promise<ClmmParsedRpcData>;
    fetchComputeClmmInfo(poolInfoWithAddress: ClmmRpcDataWithAddress): Promise<ComputeClmmPoolInfo>;
    fetchExBitmaps(exBitmapAddress: Address[]): Promise<ReturnTypeFetchExBitmaps>;
    fetchComputeMultipleClmmInfo(poolList: ClmmRpcDataWithAddress[]): Promise<Record<string, ComputeClmmPoolInfo>>;
    fetchMultipleMintInfos(mints: Address[]): Promise<ReturnTypeFetchMultipleMintInfos>;
    getComputeClmmPoolInfo(clmmPoolRpcInfoWithAddress: ClmmRpcDataWithAddress): Promise<ComputeClmmPoolInfo>;
    getPoolInfoFromRpc(poolId: string, poolStats?: RaydiumPoolStatsSource): Promise<ApiV3PoolInfoConcentratedItem>;
    clmmComputeInfoToApiInfo(pool: ComputeClmmPoolInfo, poolStats?: RaydiumPoolStatsSource): ApiV3PoolInfoConcentratedItem;
}
export interface ClmmRpcDataWithAddress {
    address: Address;
    clmmPoolRpcInfo: ClmmParsedRpcData;
}
type RaydiumCountStatsSource = Partial<Omit<ApiV3PoolInfoCountItem, 'rewardApr'>> & {
    rewardApr?: unknown;
};
export type RaydiumPoolStatsSource = {
    day?: RaydiumCountStatsSource;
    week?: RaydiumCountStatsSource;
    month?: RaydiumCountStatsSource;
    tvl?: number;
};
export declare function getPdaExBitmapAccount(programId: Address, poolId: Address): Promise<ProgramDerivedAddress>;
export {};
//# sourceMappingURL=RaydiumService.d.ts.map