import { PublicKey } from "@solana/web3.js";
import BN from "bn.js";
import Decimal from "decimal.js";
/*** Pool ***/
export declare type PoolData = {
    address: PublicKey;
    tokenMintA: PublicKey;
    tokenMintB: PublicKey;
    tickSpacing: number;
    feeRate: number;
    protocolFeeRate: number;
    liquidity: BN;
    sqrtPrice: BN;
    tickCurrentIndex: number;
    protocolFeeOwedA: BN;
    protocolFeeOwedB: BN;
    tokenVaultAmountA: BN;
    tokenVaultAmountB: BN;
    rewards: PoolRewardInfo[];
    feeGrowthGlobalAX64: BN;
    feeGrowthGlobalBX64: BN;
    feePercentage: Decimal;
    protocolFeePercentage: Decimal;
    price: Decimal;
    decimalProtocolFeeOwedA: Decimal;
    decimalProtocolFeeOwedB: Decimal;
    decimalTokenVaultAmountA: Decimal;
    decimalTokenVaultAmountB: Decimal;
    tokenDecimalsA: number;
    tokenDecimalsB: number;
};
export declare type PoolRewardInfo = {
    mint: PublicKey;
    vault: PublicKey;
    vaultAmount?: BN;
    emissionsPerSecondX64: BN;
    growthGlobalX64: BN;
    decimalVaultAmount?: Decimal;
    emissionsPerSecond?: Decimal;
};
/*** Position ***/
export declare type UserPositionData = {
    address: PublicKey;
    poolAddress: PublicKey;
    positionMint: PublicKey;
    liquidity: BN;
    tickLowerIndex: number;
    tickUpperIndex: number;
    feeOwedA: BN;
    feeOwedB: BN;
    rewards: UserPositionRewardInfo[];
    priceLower: Decimal;
    priceUpper: Decimal;
    decimalFeeOwedA: Decimal;
    decimalFeeOwedB: Decimal;
};
export declare type UserPositionRewardInfo = {
    mint: PublicKey;
    amountOwed?: BN;
    decimalAmountOwed?: Decimal;
};
/*** Misc ***/
export declare type UserToken = {
    address: PublicKey;
    amount?: string;
    decimals?: number;
    mint?: string;
};
