import { AccountId } from '../id';
import { Signature } from '../signature';
import { SlotCommitmentId, SlotIndex } from '../slot';
import { u64 } from '../../utils/type-aliases';
import { BlockBody } from './block-body';
import { BasicBlockBody } from './basic';
import { ValidationBlockBody } from './validation';
import { ProtocolParameters, BlockId } from '../../..';
/**
 * The block header.
 */
declare class BlockHeader {
    /**
     * Protocol version of the block.
     */
    readonly protocolVersion: number;
    /**
     * Network identifier.
     */
    readonly networkId: u64;
    /**
     * The time at which the block was issued. It is a Unix timestamp in nanoseconds.
     */
    readonly issuingTime: u64;
    /**
     * The identifier of the slot to which this block commits.
     */
    readonly slotCommitmentId: SlotCommitmentId;
    /**
     * The slot index of the latest finalized slot.
     */
    readonly latestFinalizedSlot: SlotIndex;
    /**
     * The identifier of the account that issued this block.
     */
    readonly issuerId: AccountId;
    constructor(protocolVersion: number, networkId: u64, issuingTime: u64, slotCommitmentId: SlotCommitmentId, latestFinalizedSlot: SlotIndex, issuerId: AccountId);
}
/**
 * Represent the object that nodes gossip around the network.
 */
declare class Block {
    /**
     * The block header.
     */
    readonly header: BlockHeader;
    readonly body: BlockBody;
    /**
     * The block signature; used to validate issuance capabilities.
     */
    readonly signature: Signature;
    constructor(header: BlockHeader, body: BlockBody, signature: Signature);
    /**
     * Checks whether the block body is a `BasicBlockBody`.
     * @returns true if it is, otherwise false
     */
    isBasic(): boolean;
    /**
     * Gets the block body as an actual `BasicBlockBody`.
     * NOTE: Will throw an error if the block body is not a `BasicBlockBody`.
     * @returns The block
     */
    asBasic(): BasicBlockBody;
    /**
     * Checks whether the block body is a `ValidationBlockBody`.
     * @returns true if it is, otherwise false
     */
    isValidation(): boolean;
    /**
     * Gets the block body as an actual `ValidationBlockBody`.
     * NOTE: Will throw an error if the block body is not a `ValidationBlockBody`.
     * @returns The block
     */
    asValidation(): ValidationBlockBody;
    /**
     * Returns the block id.
     */
    static id(block: Block, params: ProtocolParameters): BlockId;
}
declare function parseBlock(data: any): Block;
/**
 * Represent the object that nodes gossip around the network.
 */
declare class UnsignedBlock {
    /**
     * Protocol version of the block.
     */
    readonly protocolVersion: number;
    /**
     * Network identifier.
     */
    readonly networkId: u64;
    /**
     * The time at which the block was issued. It is a Unix timestamp in nanoseconds.
     */
    readonly issuingTime: u64;
    /**
     * The identifier of the slot to which this block commits.
     */
    readonly slotCommitmentId: SlotCommitmentId;
    /**
     * The slot index of the latest finalized slot.
     */
    readonly latestFinalizedSlot: SlotIndex;
    /**
     * The identifier of the account that issued this block.
     */
    readonly issuerId: AccountId;
    readonly body: BlockBody;
    constructor(protocolVersion: number, networkId: u64, issuingTime: u64, slotCommitmentId: SlotCommitmentId, latestFinalizedSlot: SlotIndex, issuerId: AccountId, body: BlockBody);
    /**
     * Checks whether the block body is a `BasicBlockBody`.
     * @returns true if it is, otherwise false
     */
    isBasic(): boolean;
    /**
     * Gets the block body as an actual `BasicBlock`.
     * NOTE: Will throw an error if the block body is not a `BasicBlockBody`.
     * @returns The BasicBlockBody
     */
    asBasic(): BasicBlockBody;
    /**
     * Checks whether the block body is a `ValidationBlockBody`.
     * @returns true if it is, otherwise false
     */
    isValidation(): boolean;
    /**
     * Gets the block body as an actual `ValidationBlockBody`.
     * NOTE: Will throw an error if the block body is not a `ValidationBlockBody`.
     * @returns The ValidationBlockBody
     */
    asValidation(): ValidationBlockBody;
}
declare function parseUnsignedBlock(data: any): UnsignedBlock;
export { Block, BlockHeader, parseBlock, UnsignedBlock, parseUnsignedBlock };
