import { Address } from "@solana/kit";
import BN from "bn.js";
import * as types from "../types";
export interface StateFields {
    msolMint: Address;
    adminAuthority: Address;
    operationalSolAccount: Address;
    treasuryMsolAccount: Address;
    reserveBumpSeed: number;
    msolMintAuthorityBumpSeed: number;
    rentExemptForTokenAcc: BN;
    rewardFee: types.FeeFields;
    stakeSystem: types.StakeSystemFields;
    validatorSystem: types.ValidatorSystemFields;
    liqPool: types.LiqPoolFields;
    availableReserveBalance: BN;
    msolSupply: BN;
    msolPrice: BN;
    /** count tickets for delayed-unstake */
    circulatingTicketCount: BN;
    /** total lamports amount of generated and not claimed yet tickets */
    circulatingTicketBalance: BN;
    lentFromReserve: BN;
    minDeposit: BN;
    minWithdraw: BN;
    stakingSolCap: BN;
    emergencyCoolingDown: BN;
}
export interface StateJSON {
    msolMint: string;
    adminAuthority: string;
    operationalSolAccount: string;
    treasuryMsolAccount: string;
    reserveBumpSeed: number;
    msolMintAuthorityBumpSeed: number;
    rentExemptForTokenAcc: string;
    rewardFee: types.FeeJSON;
    stakeSystem: types.StakeSystemJSON;
    validatorSystem: types.ValidatorSystemJSON;
    liqPool: types.LiqPoolJSON;
    availableReserveBalance: string;
    msolSupply: string;
    msolPrice: string;
    /** count tickets for delayed-unstake */
    circulatingTicketCount: string;
    /** total lamports amount of generated and not claimed yet tickets */
    circulatingTicketBalance: string;
    lentFromReserve: string;
    minDeposit: string;
    minWithdraw: string;
    stakingSolCap: string;
    emergencyCoolingDown: string;
}
export declare class State {
    readonly msolMint: Address;
    readonly adminAuthority: Address;
    readonly operationalSolAccount: Address;
    readonly treasuryMsolAccount: Address;
    readonly reserveBumpSeed: number;
    readonly msolMintAuthorityBumpSeed: number;
    readonly rentExemptForTokenAcc: BN;
    readonly rewardFee: types.Fee;
    readonly stakeSystem: types.StakeSystem;
    readonly validatorSystem: types.ValidatorSystem;
    readonly liqPool: types.LiqPool;
    readonly availableReserveBalance: BN;
    readonly msolSupply: BN;
    readonly msolPrice: BN;
    /** count tickets for delayed-unstake */
    readonly circulatingTicketCount: BN;
    /** total lamports amount of generated and not claimed yet tickets */
    readonly circulatingTicketBalance: BN;
    readonly lentFromReserve: BN;
    readonly minDeposit: BN;
    readonly minWithdraw: BN;
    readonly stakingSolCap: BN;
    readonly emergencyCoolingDown: BN;
    constructor(fields: StateFields);
    static layout(property?: string): import("buffer-layout").Layout<unknown>;
    static fromDecoded(obj: any): types.State;
    static toEncodable(fields: StateFields): {
        msolMint: Address;
        adminAuthority: Address;
        operationalSolAccount: Address;
        treasuryMsolAccount: Address;
        reserveBumpSeed: number;
        msolMintAuthorityBumpSeed: number;
        rentExemptForTokenAcc: BN;
        rewardFee: {
            basisPoints: number;
        };
        stakeSystem: {
            stakeList: {
                account: Address;
                itemSize: number;
                count: number;
                newAccount: Address;
                copiedCount: number;
            };
            delayedUnstakeCoolingDown: BN;
            stakeDepositBumpSeed: number;
            stakeWithdrawBumpSeed: number;
            slotsForStakeDelta: BN;
            lastStakeDeltaEpoch: BN;
            minStake: BN;
            extraStakeDeltaRuns: number;
        };
        validatorSystem: {
            validatorList: {
                account: Address;
                itemSize: number;
                count: number;
                newAccount: Address;
                copiedCount: number;
            };
            managerAuthority: Address;
            totalValidatorScore: number;
            totalActiveBalance: BN;
            autoAddValidatorEnabled: number;
        };
        liqPool: {
            lpMint: Address;
            lpMintAuthorityBumpSeed: number;
            solLegBumpSeed: number;
            msolLegAuthorityBumpSeed: number;
            msolLeg: Address;
            lpLiquidityTarget: BN;
            lpMaxFee: {
                basisPoints: number;
            };
            lpMinFee: {
                basisPoints: number;
            };
            treasuryCut: {
                basisPoints: number;
            };
            lpSupply: BN;
            lentFromSolLeg: BN;
            liquiditySolCap: BN;
        };
        availableReserveBalance: BN;
        msolSupply: BN;
        msolPrice: BN;
        circulatingTicketCount: BN;
        circulatingTicketBalance: BN;
        lentFromReserve: BN;
        minDeposit: BN;
        minWithdraw: BN;
        stakingSolCap: BN;
        emergencyCoolingDown: BN;
    };
    toJSON(): StateJSON;
    static fromJSON(obj: StateJSON): State;
    toEncodable(): {
        msolMint: Address;
        adminAuthority: Address;
        operationalSolAccount: Address;
        treasuryMsolAccount: Address;
        reserveBumpSeed: number;
        msolMintAuthorityBumpSeed: number;
        rentExemptForTokenAcc: BN;
        rewardFee: {
            basisPoints: number;
        };
        stakeSystem: {
            stakeList: {
                account: Address;
                itemSize: number;
                count: number;
                newAccount: Address;
                copiedCount: number;
            };
            delayedUnstakeCoolingDown: BN;
            stakeDepositBumpSeed: number;
            stakeWithdrawBumpSeed: number;
            slotsForStakeDelta: BN;
            lastStakeDeltaEpoch: BN;
            minStake: BN;
            extraStakeDeltaRuns: number;
        };
        validatorSystem: {
            validatorList: {
                account: Address;
                itemSize: number;
                count: number;
                newAccount: Address;
                copiedCount: number;
            };
            managerAuthority: Address;
            totalValidatorScore: number;
            totalActiveBalance: BN;
            autoAddValidatorEnabled: number;
        };
        liqPool: {
            lpMint: Address;
            lpMintAuthorityBumpSeed: number;
            solLegBumpSeed: number;
            msolLegAuthorityBumpSeed: number;
            msolLeg: Address;
            lpLiquidityTarget: BN;
            lpMaxFee: {
                basisPoints: number;
            };
            lpMinFee: {
                basisPoints: number;
            };
            treasuryCut: {
                basisPoints: number;
            };
            lpSupply: BN;
            lentFromSolLeg: BN;
            liquiditySolCap: BN;
        };
        availableReserveBalance: BN;
        msolSupply: BN;
        msolPrice: BN;
        circulatingTicketCount: BN;
        circulatingTicketBalance: BN;
        lentFromReserve: BN;
        minDeposit: BN;
        minWithdraw: BN;
        stakingSolCap: BN;
        emergencyCoolingDown: BN;
    };
}
//# sourceMappingURL=State.d.ts.map