import { Address, GetAccountInfoApi, GetMultipleAccountsApi, Rpc } from "@solana/kit";
import BN from "bn.js";
import * as types from "../types";
export interface PositionFields {
    whirlpool: Address;
    positionMint: Address;
    liquidity: BN;
    tickLowerIndex: number;
    tickUpperIndex: number;
    feeGrowthCheckpointA: BN;
    feeOwedA: BN;
    feeGrowthCheckpointB: BN;
    feeOwedB: BN;
    rewardInfos: Array<types.PositionRewardInfoFields>;
}
export interface PositionJSON {
    whirlpool: string;
    positionMint: string;
    liquidity: string;
    tickLowerIndex: number;
    tickUpperIndex: number;
    feeGrowthCheckpointA: string;
    feeOwedA: string;
    feeGrowthCheckpointB: string;
    feeOwedB: string;
    rewardInfos: Array<types.PositionRewardInfoJSON>;
}
export declare class Position {
    readonly whirlpool: Address;
    readonly positionMint: Address;
    readonly liquidity: BN;
    readonly tickLowerIndex: number;
    readonly tickUpperIndex: number;
    readonly feeGrowthCheckpointA: BN;
    readonly feeOwedA: BN;
    readonly feeGrowthCheckpointB: BN;
    readonly feeOwedB: BN;
    readonly rewardInfos: Array<types.PositionRewardInfo>;
    static readonly discriminator: Buffer<ArrayBuffer>;
    static readonly layout: import("buffer-layout").Layout<Position>;
    constructor(fields: PositionFields);
    static fetch(rpc: Rpc<GetAccountInfoApi>, address: Address, programId?: Address): Promise<Position | null>;
    static fetchMultiple(rpc: Rpc<GetMultipleAccountsApi>, addresses: Address[], programId?: Address): Promise<Array<Position | null>>;
    static decode(data: Buffer): Position;
    toJSON(): PositionJSON;
    static fromJSON(obj: PositionJSON): Position;
}
//# sourceMappingURL=Position.d.ts.map