import { BlockId } from "../chain/BlockId.js";
import { Bytes } from "../chain/Bytes.js";
import { Checksum256 } from "../chain/Checksum.js";
import { Int16, Int64, UInt16, UInt32, UInt8, VarUInt } from "../chain/Integer.js";
import { Name } from "../chain/Name.js";
import { PackedTransaction } from "../chain/Transaction.js";
import { PublicKey } from "../chain/PublicKey.js";
import { Signature } from "../chain/Signature.js";
import { Struct } from "../chain/Struct.js";
import { Variant } from "../chain/Variant.js";
export declare class HandshakeMessage extends Struct {
    networkVersion: UInt16;
    chainId: Checksum256;
    nodeId: Checksum256;
    key: PublicKey;
    time: Int64;
    token: Checksum256;
    sig: Signature;
    p2pAddress: string;
    lastIrreversibleBlockNumber: UInt32;
    lastIrreversibleBlockId: BlockId;
    headNum: UInt32;
    headId: BlockId;
    os: string;
    agent: string;
    generation: Int16;
}
export declare class ChainSizeMessage extends Struct {
    lastIrreversibleBlockNumber: UInt32;
    lastIrreversibleBlockId: BlockId;
    headNum: UInt32;
    headId: BlockId;
}
export declare class GoAwayMessage extends Struct {
    reason: UInt8;
    nodeId: Checksum256;
}
export declare class TimeMessage extends Struct {
    org: Int64;
    rec: Int64;
    xmt: Int64;
    dst: Int64;
}
export declare class NoticeMessage extends Struct {
    knownTrx: Checksum256[];
    knownBlocks: BlockId[];
}
export declare class RequestMessage extends Struct {
    reqTrx: Checksum256[];
    reqBlocks: BlockId[];
}
export declare class SyncRequestMessage extends Struct {
    startBlock: UInt32;
    endBlock: UInt32;
}
export declare class NewProducersEntry extends Struct {
    producer_name: Name;
    block_signing_key: PublicKey;
}
export declare class NewProducers extends Struct {
    version: UInt32;
    producers: NewProducersEntry;
}
export declare class BlockExtension extends Struct {
    type: UInt16;
    data: Bytes;
}
export declare class HeaderExtension extends Struct {
    type: UInt16;
    data: Bytes;
}
declare class TrxVariant extends Variant {
    value: Checksum256 | PackedTransaction;
}
export declare class FullTransactionReceipt extends Struct {
    status: UInt8;
    cpu_usage_us: UInt32;
    net_usage_words: VarUInt;
    trx: TrxVariant;
}
export declare class BlockHeader extends Struct {
    timeSlot: UInt32;
    producer: Name;
    confirmed: UInt16;
    previous: BlockId;
    transaction_mroot: BlockId;
    action_mroot: BlockId;
    schedule_version: UInt32;
    new_producers?: NewProducers;
    header_extensions: HeaderExtension[];
    get blockNum(): UInt32;
    get id(): BlockId;
}
export declare class SignedBlock extends BlockHeader {
    producer_signature: Signature;
    transactions: FullTransactionReceipt[];
    block_extensions: BlockExtension[];
}
export declare class NetMessage extends Variant {
    value: HandshakeMessage | ChainSizeMessage | GoAwayMessage | TimeMessage | NoticeMessage | RequestMessage | SyncRequestMessage | SignedBlock | PackedTransaction;
}
export {};
//# sourceMappingURL=Types.d.ts.map