import { PublicKey, Connection } from "@solana/web3.js";
import BN from "bn.js";
import * as types from "../types";
export interface PositionFields {
    /** The LB pair of this position */
    lbPair: PublicKey;
    /** Owner of the position. Client rely on this to to fetch their positions. */
    owner: PublicKey;
    /** Liquidity shares of this position in bins (lower_bin_id <-> upper_bin_id). This is the same as LP concept. */
    liquidityShares: Array<BN>;
    /** Farming reward information */
    rewardInfos: Array<types.UserRewardInfoFields>;
    /** Swap fee to claim information */
    feeInfos: Array<types.FeeInfoFields>;
    /** Lower bin ID */
    lowerBinId: number;
    /** Upper bin ID */
    upperBinId: number;
    /** Last updated timestamp */
    lastUpdatedAt: BN;
    /** Total claimed token fee X */
    totalClaimedFeeXAmount: BN;
    /** Total claimed token fee Y */
    totalClaimedFeeYAmount: BN;
    /** Total claimed rewards */
    totalClaimedRewards: Array<BN>;
    /** Reserved space for future use */
    reserved: Array<number>;
}
export interface PositionJSON {
    /** The LB pair of this position */
    lbPair: string;
    /** Owner of the position. Client rely on this to to fetch their positions. */
    owner: string;
    /** Liquidity shares of this position in bins (lower_bin_id <-> upper_bin_id). This is the same as LP concept. */
    liquidityShares: Array<string>;
    /** Farming reward information */
    rewardInfos: Array<types.UserRewardInfoJSON>;
    /** Swap fee to claim information */
    feeInfos: Array<types.FeeInfoJSON>;
    /** Lower bin ID */
    lowerBinId: number;
    /** Upper bin ID */
    upperBinId: number;
    /** Last updated timestamp */
    lastUpdatedAt: string;
    /** Total claimed token fee X */
    totalClaimedFeeXAmount: string;
    /** Total claimed token fee Y */
    totalClaimedFeeYAmount: string;
    /** Total claimed rewards */
    totalClaimedRewards: Array<string>;
    /** Reserved space for future use */
    reserved: Array<number>;
}
export declare class Position {
    /** The LB pair of this position */
    readonly lbPair: PublicKey;
    /** Owner of the position. Client rely on this to to fetch their positions. */
    readonly owner: PublicKey;
    /** Liquidity shares of this position in bins (lower_bin_id <-> upper_bin_id). This is the same as LP concept. */
    readonly liquidityShares: Array<BN>;
    /** Farming reward information */
    readonly rewardInfos: Array<types.UserRewardInfo>;
    /** Swap fee to claim information */
    readonly feeInfos: Array<types.FeeInfo>;
    /** Lower bin ID */
    readonly lowerBinId: number;
    /** Upper bin ID */
    readonly upperBinId: number;
    /** Last updated timestamp */
    readonly lastUpdatedAt: BN;
    /** Total claimed token fee X */
    readonly totalClaimedFeeXAmount: BN;
    /** Total claimed token fee Y */
    readonly totalClaimedFeeYAmount: BN;
    /** Total claimed rewards */
    readonly totalClaimedRewards: Array<BN>;
    /** Reserved space for future use */
    readonly reserved: Array<number>;
    static readonly discriminator: Buffer<ArrayBuffer>;
    static readonly layout: any;
    constructor(fields: PositionFields);
    static fetch(c: Connection, address: PublicKey, programId?: PublicKey): Promise<Position | null>;
    static fetchMultiple(c: Connection, addresses: PublicKey[], programId?: PublicKey): Promise<Array<Position | null>>;
    static decode(data: Buffer): Position;
    toJSON(): PositionJSON;
    static fromJSON(obj: PositionJSON): Position;
}
//# sourceMappingURL=Position.d.ts.map