import { PublicKey, Connection } from "@solana/web3.js";
import BN from "bn.js";
import * as types from "../types";
export interface VaultStateFields {
    vaultAdminAuthority: PublicKey;
    baseVaultAuthority: PublicKey;
    baseVaultAuthorityBump: BN;
    tokenMint: PublicKey;
    tokenMintDecimals: BN;
    tokenVault: PublicKey;
    tokenProgram: PublicKey;
    sharesMint: PublicKey;
    sharesMintDecimals: BN;
    tokenAvailable: BN;
    sharesIssued: BN;
    availableCrankFunds: BN;
    padding0: BN;
    performanceFeeBps: BN;
    managementFeeBps: BN;
    lastFeeChargeTimestamp: BN;
    prevAumSf: BN;
    pendingFeesSf: BN;
    vaultAllocationStrategy: Array<types.VaultAllocationFields>;
    padding1: Array<BN>;
    minDepositAmount: BN;
    minWithdrawAmount: BN;
    minInvestAmount: BN;
    minInvestDelaySlots: BN;
    crankFundFeePerReserve: BN;
    pendingAdmin: PublicKey;
    cumulativeEarnedInterestSf: BN;
    cumulativeMgmtFeesSf: BN;
    cumulativePerfFeesSf: BN;
    name: Array<number>;
    vaultLookupTable: PublicKey;
    vaultFarm: PublicKey;
    creationTimestamp: BN;
    padding2: BN;
    allocationAdmin: PublicKey;
    padding3: Array<BN>;
}
export interface VaultStateJSON {
    vaultAdminAuthority: string;
    baseVaultAuthority: string;
    baseVaultAuthorityBump: string;
    tokenMint: string;
    tokenMintDecimals: string;
    tokenVault: string;
    tokenProgram: string;
    sharesMint: string;
    sharesMintDecimals: string;
    tokenAvailable: string;
    sharesIssued: string;
    availableCrankFunds: string;
    padding0: string;
    performanceFeeBps: string;
    managementFeeBps: string;
    lastFeeChargeTimestamp: string;
    prevAumSf: string;
    pendingFeesSf: string;
    vaultAllocationStrategy: Array<types.VaultAllocationJSON>;
    padding1: Array<string>;
    minDepositAmount: string;
    minWithdrawAmount: string;
    minInvestAmount: string;
    minInvestDelaySlots: string;
    crankFundFeePerReserve: string;
    pendingAdmin: string;
    cumulativeEarnedInterestSf: string;
    cumulativeMgmtFeesSf: string;
    cumulativePerfFeesSf: string;
    name: Array<number>;
    vaultLookupTable: string;
    vaultFarm: string;
    creationTimestamp: string;
    padding2: string;
    allocationAdmin: string;
    padding3: Array<string>;
}
export declare class VaultState {
    readonly vaultAdminAuthority: PublicKey;
    readonly baseVaultAuthority: PublicKey;
    readonly baseVaultAuthorityBump: BN;
    readonly tokenMint: PublicKey;
    readonly tokenMintDecimals: BN;
    readonly tokenVault: PublicKey;
    readonly tokenProgram: PublicKey;
    readonly sharesMint: PublicKey;
    readonly sharesMintDecimals: BN;
    readonly tokenAvailable: BN;
    readonly sharesIssued: BN;
    readonly availableCrankFunds: BN;
    readonly padding0: BN;
    readonly performanceFeeBps: BN;
    readonly managementFeeBps: BN;
    readonly lastFeeChargeTimestamp: BN;
    readonly prevAumSf: BN;
    readonly pendingFeesSf: BN;
    readonly vaultAllocationStrategy: Array<types.VaultAllocation>;
    readonly padding1: Array<BN>;
    readonly minDepositAmount: BN;
    readonly minWithdrawAmount: BN;
    readonly minInvestAmount: BN;
    readonly minInvestDelaySlots: BN;
    readonly crankFundFeePerReserve: BN;
    readonly pendingAdmin: PublicKey;
    readonly cumulativeEarnedInterestSf: BN;
    readonly cumulativeMgmtFeesSf: BN;
    readonly cumulativePerfFeesSf: BN;
    readonly name: Array<number>;
    readonly vaultLookupTable: PublicKey;
    readonly vaultFarm: PublicKey;
    readonly creationTimestamp: BN;
    readonly padding2: BN;
    readonly allocationAdmin: PublicKey;
    readonly padding3: Array<BN>;
    static readonly discriminator: Buffer<ArrayBuffer>;
    static readonly layout: any;
    constructor(fields: VaultStateFields);
    static fetch(c: Connection, address: PublicKey, programId?: PublicKey): Promise<VaultState | null>;
    static fetchMultiple(c: Connection, addresses: PublicKey[], programId?: PublicKey): Promise<Array<VaultState | null>>;
    static decode(data: Buffer): VaultState;
    toJSON(): VaultStateJSON;
    static fromJSON(obj: VaultStateJSON): VaultState;
}
//# sourceMappingURL=VaultState.d.ts.map