import { PublicKey, Connection } from '@solana/web3.js';
import BN from 'bn.js';
import * as types from '../types';
export interface VaultStateFields {
    adminAuthority: 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>;
    minDepositAmount: BN;
    minWithdrawAmount: BN;
    minInvestAmount: BN;
    minInvestDelaySlots: BN;
    crankFundFeePerReserve: BN;
    pendingAdmin: PublicKey;
    vaultLookupTable: PublicKey;
    cumulativeNetEarnedYield: BN;
    padding1: BN;
    padding2: Array<BN>;
}
export interface VaultStateJSON {
    adminAuthority: 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>;
    minDepositAmount: string;
    minWithdrawAmount: string;
    minInvestAmount: string;
    minInvestDelaySlots: string;
    crankFundFeePerReserve: string;
    pendingAdmin: string;
    vaultLookupTable: string;
    cumulativeNetEarnedYield: string;
    padding1: string;
    padding2: Array<string>;
}
export declare class VaultState {
    readonly adminAuthority: 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 minDepositAmount: BN;
    readonly minWithdrawAmount: BN;
    readonly minInvestAmount: BN;
    readonly minInvestDelaySlots: BN;
    readonly crankFundFeePerReserve: BN;
    readonly pendingAdmin: PublicKey;
    readonly vaultLookupTable: PublicKey;
    readonly cumulativeNetEarnedYield: BN;
    readonly padding1: BN;
    readonly padding2: Array<BN>;
    static readonly discriminator: Buffer;
    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