import BN from "bn.js";
import * as types from "../types";
export interface BinFields {
    /** Amount of token X in the bin. This already excluded protocol fees. */
    amountX: BN;
    /** Amount of token Y in the bin. This already excluded protocol fees. */
    amountY: BN;
    /** Bin price */
    price: BN;
    /** Liquidities of the bin. This is the same as LP mint supply. q-number */
    liquiditySupply: BN;
    /** reward_a_per_token_stored */
    rewardPerTokenStored: Array<BN>;
    /** Swap fee amount of token X per liquidity deposited. */
    feeAmountXPerTokenStored: BN;
    /** Swap fee amount of token Y per liquidity deposited. */
    feeAmountYPerTokenStored: BN;
    /** Total token X swap into the bin. Only used for tracking purpose. */
    amountXIn: BN;
    /** Total token Y swap into he bin. Only used for tracking purpose. */
    amountYIn: BN;
}
export interface BinJSON {
    /** Amount of token X in the bin. This already excluded protocol fees. */
    amountX: string;
    /** Amount of token Y in the bin. This already excluded protocol fees. */
    amountY: string;
    /** Bin price */
    price: string;
    /** Liquidities of the bin. This is the same as LP mint supply. q-number */
    liquiditySupply: string;
    /** reward_a_per_token_stored */
    rewardPerTokenStored: Array<string>;
    /** Swap fee amount of token X per liquidity deposited. */
    feeAmountXPerTokenStored: string;
    /** Swap fee amount of token Y per liquidity deposited. */
    feeAmountYPerTokenStored: string;
    /** Total token X swap into the bin. Only used for tracking purpose. */
    amountXIn: string;
    /** Total token Y swap into he bin. Only used for tracking purpose. */
    amountYIn: string;
}
export declare class Bin {
    /** Amount of token X in the bin. This already excluded protocol fees. */
    readonly amountX: BN;
    /** Amount of token Y in the bin. This already excluded protocol fees. */
    readonly amountY: BN;
    /** Bin price */
    readonly price: BN;
    /** Liquidities of the bin. This is the same as LP mint supply. q-number */
    readonly liquiditySupply: BN;
    /** reward_a_per_token_stored */
    readonly rewardPerTokenStored: Array<BN>;
    /** Swap fee amount of token X per liquidity deposited. */
    readonly feeAmountXPerTokenStored: BN;
    /** Swap fee amount of token Y per liquidity deposited. */
    readonly feeAmountYPerTokenStored: BN;
    /** Total token X swap into the bin. Only used for tracking purpose. */
    readonly amountXIn: BN;
    /** Total token Y swap into he bin. Only used for tracking purpose. */
    readonly amountYIn: BN;
    constructor(fields: BinFields);
    static layout(property?: string): any;
    static fromDecoded(obj: any): types.Bin;
    static toEncodable(fields: BinFields): {
        amountX: BN;
        amountY: BN;
        price: BN;
        liquiditySupply: BN;
        rewardPerTokenStored: BN[];
        feeAmountXPerTokenStored: BN;
        feeAmountYPerTokenStored: BN;
        amountXIn: BN;
        amountYIn: BN;
    };
    toJSON(): BinJSON;
    static fromJSON(obj: BinJSON): Bin;
    toEncodable(): {
        amountX: BN;
        amountY: BN;
        price: BN;
        liquiditySupply: BN;
        rewardPerTokenStored: BN[];
        feeAmountXPerTokenStored: BN;
        feeAmountYPerTokenStored: BN;
        amountXIn: BN;
        amountYIn: BN;
    };
}
//# sourceMappingURL=Bin.d.ts.map