/// <reference types="node" />
import type { Buffer } from 'buffer';
import { PublicKey } from './publickey.js';
export declare const VOTE_PROGRAM_ID: PublicKey;
export declare type Lockout = {
    slot: number;
    confirmationCount: number;
};
/**
 * History of how many credits earned by the end of each epoch
 */
export declare type EpochCredits = Readonly<{
    epoch: number;
    credits: number;
    prevCredits: number;
}>;
export declare type AuthorizedVoter = Readonly<{
    epoch: number;
    authorizedVoter: PublicKey;
}>;
export declare type PriorVoter = Readonly<{
    authorizedPubkey: PublicKey;
    epochOfLastAuthorizedSwitch: number;
    targetEpoch: number;
}>;
export declare type BlockTimestamp = Readonly<{
    slot: number;
    timestamp: number;
}>;
/**
 * VoteAccount class
 */
export declare class VoteAccount {
    nodePubkey: PublicKey;
    authorizedWithdrawer: PublicKey;
    commission: number;
    rootSlot: number | null;
    votes: Lockout[];
    authorizedVoters: AuthorizedVoter[];
    priorVoters: PriorVoter[];
    epochCredits: EpochCredits[];
    lastTimestamp: BlockTimestamp;
    /**
     * Deserialize VoteAccount from the account data.
     *
     * @param buffer account data
     * @return VoteAccount
     */
    static fromAccountData(buffer: Buffer | Uint8Array | Array<number>): VoteAccount;
}
