///
import { BinaryWriter, BlockBaseJSON, UInt160, UInt256, UInt256Hex } from '@neo-one/client-common';
import BN from 'bn.js';
import { Equals, EquatableKey } from './Equatable';
import { Header, HeaderKey } from './Header';
import { DeserializeWireBaseOptions, SerializeJSONContext, SerializeWire } from './Serializable';
import { Witness } from './Witness';
export interface BlockGetScriptHashesForVerifyingOptions {
readonly getHeader: (key: HeaderKey) => Promise;
}
export interface BlockBaseAdd {
readonly version?: number;
readonly previousHash: UInt256;
readonly merkleRoot: UInt256;
readonly timestamp: number;
readonly index: number;
readonly consensusData: BN;
readonly nextConsensus: UInt160;
readonly script?: Witness;
readonly hash?: UInt256;
}
export declare abstract class BlockBase implements EquatableKey {
static deserializeBlockBaseWireBase(options: DeserializeWireBaseOptions): BlockBaseAdd;
readonly version: number;
readonly previousHash: UInt256;
readonly merkleRoot: UInt256;
readonly timestamp: number;
readonly index: number;
readonly consensusData: BN;
readonly nextConsensus: UInt160;
readonly equals: Equals;
readonly toKeyString: () => string;
readonly getScriptHashesForVerifying: (input: BlockGetScriptHashesForVerifyingOptions) => Promise>;
readonly serializeUnsigned: SerializeWire;
readonly serializeWire: SerializeWire;
private readonly hashInternal;
private readonly hashHexInternal;
private readonly messageInternal;
private readonly scriptInternal;
private readonly sizeInternal;
constructor({ version, previousHash, merkleRoot, timestamp, index, consensusData, nextConsensus, script, hash, }: BlockBaseAdd);
get hash(): UInt256;
get hashHex(): UInt256Hex;
get message(): Buffer;
get size(): number;
get script(): Witness;
serializeUnsignedBase(writer: BinaryWriter): void;
serializeWireBase(writer: BinaryWriter): void;
serializeBlockBaseJSON(context: SerializeJSONContext): BlockBaseJSON;
protected readonly sizeExclusive: () => number;
}