import { PublicKey, Connection } from "@solana/web3.js";
import BN from "bn.js";
import * as types from "../types";
export interface PoolStateFields {
    bump: Array<number>;
    ammConfig: PublicKey;
    owner: PublicKey;
    tokenMint0: PublicKey;
    tokenMint1: PublicKey;
    tokenVault0: PublicKey;
    tokenVault1: PublicKey;
    observationKey: PublicKey;
    mintDecimals0: number;
    mintDecimals1: number;
    tickSpacing: number;
    liquidity: BN;
    sqrtPriceX64: BN;
    tickCurrent: number;
    observationIndex: number;
    observationUpdateDuration: number;
    feeGrowthGlobal0X64: BN;
    feeGrowthGlobal1X64: BN;
    protocolFeesToken0: BN;
    protocolFeesToken1: BN;
    swapInAmountToken0: BN;
    swapOutAmountToken1: BN;
    swapInAmountToken1: BN;
    swapOutAmountToken0: BN;
    status: number;
    padding: Array<number>;
    rewardInfos: Array<types.RewardInfoFields>;
    tickArrayBitmap: Array<BN>;
    totalFeesToken0: BN;
    totalFeesClaimedToken0: BN;
    totalFeesToken1: BN;
    totalFeesClaimedToken1: BN;
    fundFeesToken0: BN;
    fundFeesToken1: BN;
    openTime: BN;
    padding1: Array<BN>;
    padding2: Array<BN>;
}
export interface PoolStateJSON {
    bump: Array<number>;
    ammConfig: string;
    owner: string;
    tokenMint0: string;
    tokenMint1: string;
    tokenVault0: string;
    tokenVault1: string;
    observationKey: string;
    mintDecimals0: number;
    mintDecimals1: number;
    tickSpacing: number;
    liquidity: string;
    sqrtPriceX64: string;
    tickCurrent: number;
    observationIndex: number;
    observationUpdateDuration: number;
    feeGrowthGlobal0X64: string;
    feeGrowthGlobal1X64: string;
    protocolFeesToken0: string;
    protocolFeesToken1: string;
    swapInAmountToken0: string;
    swapOutAmountToken1: string;
    swapInAmountToken1: string;
    swapOutAmountToken0: string;
    status: number;
    padding: Array<number>;
    rewardInfos: Array<types.RewardInfoJSON>;
    tickArrayBitmap: Array<string>;
    totalFeesToken0: string;
    totalFeesClaimedToken0: string;
    totalFeesToken1: string;
    totalFeesClaimedToken1: string;
    fundFeesToken0: string;
    fundFeesToken1: string;
    openTime: string;
    padding1: Array<string>;
    padding2: Array<string>;
}
export declare class PoolState {
    readonly bump: Array<number>;
    readonly ammConfig: PublicKey;
    readonly owner: PublicKey;
    readonly tokenMint0: PublicKey;
    readonly tokenMint1: PublicKey;
    readonly tokenVault0: PublicKey;
    readonly tokenVault1: PublicKey;
    readonly observationKey: PublicKey;
    readonly mintDecimals0: number;
    readonly mintDecimals1: number;
    readonly tickSpacing: number;
    readonly liquidity: BN;
    readonly sqrtPriceX64: BN;
    readonly tickCurrent: number;
    readonly observationIndex: number;
    readonly observationUpdateDuration: number;
    readonly feeGrowthGlobal0X64: BN;
    readonly feeGrowthGlobal1X64: BN;
    readonly protocolFeesToken0: BN;
    readonly protocolFeesToken1: BN;
    readonly swapInAmountToken0: BN;
    readonly swapOutAmountToken1: BN;
    readonly swapInAmountToken1: BN;
    readonly swapOutAmountToken0: BN;
    readonly status: number;
    readonly padding: Array<number>;
    readonly rewardInfos: Array<types.RewardInfo>;
    readonly tickArrayBitmap: Array<BN>;
    readonly totalFeesToken0: BN;
    readonly totalFeesClaimedToken0: BN;
    readonly totalFeesToken1: BN;
    readonly totalFeesClaimedToken1: BN;
    readonly fundFeesToken0: BN;
    readonly fundFeesToken1: BN;
    readonly openTime: BN;
    readonly padding1: Array<BN>;
    readonly padding2: Array<BN>;
    static readonly discriminator: Buffer<ArrayBuffer>;
    static readonly layout: any;
    constructor(fields: PoolStateFields);
    static fetch(c: Connection, address: PublicKey, programId?: PublicKey): Promise<PoolState | null>;
    static fetchMultiple(c: Connection, addresses: PublicKey[], programId?: PublicKey): Promise<Array<PoolState | null>>;
    static decode(data: Buffer): PoolState;
    toJSON(): PoolStateJSON;
    static fromJSON(obj: PoolStateJSON): PoolState;
}
//# sourceMappingURL=PoolState.d.ts.map