import * as networks from './networks';
import { Transaction } from './transaction';
export declare class Block {
    static fromBuffer(buffer: Buffer): Block;
    static fromHex(hex: string): Block;
    static calculateTarget(bits: number): Buffer;
    static calculateMerkleRoot(transactions: Transaction[], forWitness?: boolean): Buffer;
    version: number;
    prevHash?: Buffer;
    merkleRoot?: Buffer;
    height: number;
    reserved?: Buffer;
    timestamp: number;
    witnessCommit?: Buffer;
    bits: number;
    nonce?: Buffer;
    solutionLength: number;
    solution?: Buffer;
    transactions?: Transaction[];
    getWitnessCommit(): Buffer | null;
    hasWitnessCommit(): boolean;
    hasWitness(): boolean;
    weight(): number;
    byteLength(headersOnly?: boolean, allowWitness?: boolean, useLegacyFormat?: boolean): number;
    getHash(network?: networks.Network): Buffer;
    getId(network?: networks.Network): string;
    getUTCDate(): Date;
    toBuffer(headersOnly?: boolean, useLegacyFormat?: boolean): Buffer;
    toHex(headersOnly?: boolean, useLegacyFormat?: boolean): string;
    checkTxRoots(): boolean;
    checkProofOfWork(validateSolution: boolean, network: networks.Network): boolean;
    checkTargetBits(network: networks.Network, previousBlocks: Block[]): boolean;
    private __checkMerkleRoot;
    private __checkWitnessCommit;
}
export declare type BlockGold = Block;
