import { Address, GetAccountInfoApi, GetMultipleAccountsApi, Rpc } from "@solana/kit";
import BN from "bn.js";
import * as types from "../types";
export interface VaultStateFields {
    vaultAdminAuthority: Address;
    baseVaultAuthority: Address;
    baseVaultAuthorityBump: BN;
    tokenMint: Address;
    tokenMintDecimals: BN;
    tokenVault: Address;
    tokenProgram: Address;
    sharesMint: Address;
    sharesMintDecimals: BN;
    tokenAvailable: BN;
    sharesIssued: BN;
    availableCrankFunds: BN;
    unallocatedWeight: 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: Address;
    cumulativeEarnedInterestSf: BN;
    cumulativeMgmtFeesSf: BN;
    cumulativePerfFeesSf: BN;
    name: Array<number>;
    vaultLookupTable: Address;
    vaultFarm: Address;
    creationTimestamp: BN;
    unallocatedTokensCap: BN;
    allocationAdmin: Address;
    withdrawalPenaltyLamports: BN;
    withdrawalPenaltyBps: BN;
    firstLossCapitalFarm: Address;
    allowAllocationsInWhitelistedReservesOnly: number;
    allowInvestInWhitelistedReservesOnly: number;
    padding2: Array<number>;
    depositCap: BN;
    rewardInfo: types.VaultRewardInfoFields;
    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;
    unallocatedWeight: 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;
    unallocatedTokensCap: string;
    allocationAdmin: string;
    withdrawalPenaltyLamports: string;
    withdrawalPenaltyBps: string;
    firstLossCapitalFarm: string;
    allowAllocationsInWhitelistedReservesOnly: number;
    allowInvestInWhitelistedReservesOnly: number;
    padding2: Array<number>;
    depositCap: string;
    rewardInfo: types.VaultRewardInfoJSON;
    padding3: Array<string>;
}
export declare class VaultState {
    readonly vaultAdminAuthority: Address;
    readonly baseVaultAuthority: Address;
    readonly baseVaultAuthorityBump: BN;
    readonly tokenMint: Address;
    readonly tokenMintDecimals: BN;
    readonly tokenVault: Address;
    readonly tokenProgram: Address;
    readonly sharesMint: Address;
    readonly sharesMintDecimals: BN;
    readonly tokenAvailable: BN;
    readonly sharesIssued: BN;
    readonly availableCrankFunds: BN;
    readonly unallocatedWeight: 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: Address;
    readonly cumulativeEarnedInterestSf: BN;
    readonly cumulativeMgmtFeesSf: BN;
    readonly cumulativePerfFeesSf: BN;
    readonly name: Array<number>;
    readonly vaultLookupTable: Address;
    readonly vaultFarm: Address;
    readonly creationTimestamp: BN;
    readonly unallocatedTokensCap: BN;
    readonly allocationAdmin: Address;
    readonly withdrawalPenaltyLamports: BN;
    readonly withdrawalPenaltyBps: BN;
    readonly firstLossCapitalFarm: Address;
    readonly allowAllocationsInWhitelistedReservesOnly: number;
    readonly allowInvestInWhitelistedReservesOnly: number;
    readonly padding2: Array<number>;
    readonly depositCap: BN;
    readonly rewardInfo: types.VaultRewardInfo;
    readonly padding3: Array<BN>;
    static readonly discriminator: Buffer<ArrayBuffer>;
    static readonly layout: import("buffer-layout").Layout<VaultState>;
    constructor(fields: VaultStateFields);
    static fetch(rpc: Rpc<GetAccountInfoApi>, address: Address, programId?: Address): Promise<VaultState | null>;
    static fetchMultiple(rpc: Rpc<GetMultipleAccountsApi>, addresses: Address[], programId?: Address): Promise<Array<VaultState | null>>;
    static decode(data: Buffer): VaultState;
    toJSON(): VaultStateJSON;
    static fromJSON(obj: VaultStateJSON): VaultState;
}
//# sourceMappingURL=VaultState.d.ts.map