import { BlockHeight } from "../../infrastructure/BlockHttp";
import { HashData } from "../../infrastructure/transaction/HashData";
import { PublicAccount } from "../account/PublicAccount";
import { Transaction } from "../transaction/Transaction";
/**
 * 0x68 << 24 + 1 (1744830465 as 4 byte integer): the main network version
 * 0x98 << 24 + 1 (-1744830463 as 4 byte integer): the test network version
 */
export declare enum BlockVersion {
    MAIN_NET = 104,
    TEST_NET = 152,
}
/**
 * -1: Only the nemesis blockchain has this type.
 * 1: Regular blockchain type.
 */
export declare enum BlockType {
    NEMESIS = -1,
    REGULAR = 1,
}
/**
 * A blockchain is the structure that contains the transaction information. A blockchain can contain up to 120 transactions. Blocks are generated and signed by accounts and are the instrument by which information is spread in the network.
 */
export declare class Block {
    /**
     * The height of the blockchain. Each blockchain has a unique height. Subsequent blocks differ in height by 1.
     */
    readonly height: BlockHeight;
    /**
     * The blockchain type
     */
    readonly type: BlockType;
    /**
     * The number of seconds elapsed since the creation of the nemesis blockchain.
     */
    readonly timeStamp: number;
    /**
     * The sha3-256 hash of the last blockchain as hex-string.
     */
    readonly prevBlockHash: HashData;
    /**
     * The signature of the blockchain. The signature was generated by the signer and can be used to validate that the blockchain data was not modified by a node.
     */
    readonly signature: string;
    /**
     * The public account of the harvester of the blockchain as hexadecimal number.
     */
    readonly signer: PublicAccount;
    /**
     * The array of transaction
     */
    readonly transactions: Transaction[];
    /**
     * The blockchain version
     */
    readonly version: BlockVersion;
}
