import { Address, GetAccountInfoApi, GetMultipleAccountsApi, Rpc } from "@solana/kit";
import BN from "bn.js";
import * as types from "../types";
export interface PoolStateFields {
    bump: Array<number>;
    ammConfig: Address;
    owner: Address;
    tokenMint0: Address;
    tokenMint1: Address;
    tokenVault0: Address;
    tokenVault1: Address;
    observationKey: Address;
    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: Address;
    readonly owner: Address;
    readonly tokenMint0: Address;
    readonly tokenMint1: Address;
    readonly tokenVault0: Address;
    readonly tokenVault1: Address;
    readonly observationKey: Address;
    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: import("buffer-layout").Layout<PoolState>;
    constructor(fields: PoolStateFields);
    static fetch(rpc: Rpc<GetAccountInfoApi>, address: Address, programId?: Address): Promise<PoolState | null>;
    static fetchMultiple(rpc: Rpc<GetMultipleAccountsApi>, addresses: Address[], programId?: Address): Promise<Array<PoolState | null>>;
    static decode(data: Buffer): PoolState;
    toJSON(): PoolStateJSON;
    static fromJSON(obj: PoolStateJSON): PoolState;
}
//# sourceMappingURL=PoolState.d.ts.map