/// <reference types="node" />
import Long from "long";
import { Message, Properties } from "protobufjs/light";
import { ClientTransaction } from "..";
import Darc from "../../darc/darc";
import { Roster } from "../../network/proto";
import { ForwardLink, SkipBlock } from "../../skipchain/skipblock";
import Proof, { InclusionProof, StateChangeBody } from "../proof";
/**
 * Request to create a byzcoin skipchain
 */
export declare class CreateGenesisBlock extends Message<CreateGenesisBlock> {
    /**
     * @see README#Message classes
     */
    static register(): void;
    readonly version: number;
    readonly roster: Roster;
    readonly genesisDarc: Darc;
    readonly blockInterval: Long;
    readonly maxBlockSize: number;
    readonly darcContractIDs: string[];
    constructor(props?: Properties<CreateGenesisBlock>);
}
/**
 * Response of a request to create byzcoin skipchain
 */
export declare class CreateGenesisBlockResponse extends Message<CreateGenesisBlockResponse> {
    /**
     * @see README#Message classes
     */
    static register(): void;
    readonly version: number;
    readonly skipblock: SkipBlock;
}
/**
 * Request to get the proof of presence/absence of a given key
 */
export declare class GetProof extends Message<GetProof> {
    /**
     * @see README#Message classes
     */
    static register(): void;
    readonly version: number;
    readonly key: Buffer;
    readonly id: Buffer;
}
/**
 * Response of a proof request
 */
export declare class GetProofResponse extends Message<GetProofResponse> {
    /**
     * @see README#Message classes
     */
    static register(): void;
    readonly version: number;
    readonly proof: Proof;
}
/**
 * Request to add a transaction
 */
export declare class AddTxRequest extends Message<AddTxRequest> {
    /**
     * @see README#Message classes
     */
    static register(): void;
    readonly version: number;
    readonly transaction: ClientTransaction;
    readonly inclusionwait: number;
    readonly skipchainID: Buffer;
    constructor(props?: Properties<AddTxRequest>);
}
/**
 * Response of a request to add a transaction
 */
export declare class AddTxResponse extends Message<AddTxResponse> {
    /**
     * @see README#Message classes
     */
    static register(): void;
    readonly version: number;
    readonly error: string;
    readonly proof: Proof;
}
/**
 * Request to get the current counters for given signers
 */
export declare class GetSignerCounters extends Message<GetSignerCounters> {
    /**
     * @see README#Message classes
     */
    static register(): void;
    readonly signerIDs: string[];
    readonly skipchainID: Buffer;
    constructor(props?: Properties<GetSignerCounters>);
}
/**
 * Response of a counter request in the same order as the signers array
 */
export declare class GetSignerCountersResponse extends Message<GetSignerCountersResponse> {
    /**
     * @see README#Message classes
     */
    static register(): void;
    readonly counters: Long[];
    constructor(props?: Properties<GetSignerCountersResponse>);
}
/**
 * Holds an instanceID and it's latest known version.
 */
export declare class IDVersion extends Message<IDVersion> {
    static register(): void;
    readonly id: Buffer;
    readonly version: Long;
}
/**
 * Requests a set of proofs that will be returned in a single message.
 * The reply will only hold proofs for instances that have a higher version than the ones given here.
 */
export declare class GetUpdatesRequest extends Message<GetUpdatesRequest> {
    static readonly sendVersion0: Long;
    static readonly sendMissingProofs: Long;
    static register(): void;
    readonly instances: IDVersion[];
    readonly flags: Long;
    readonly latestblockid: Buffer;
    readonly skipchainid: Buffer;
}
/**
 * The requested proofs
 */
export declare class GetUpdatesReply extends Message<GetUpdatesReply> {
    static register(): void;
    readonly proofs: InclusionProof[];
    readonly links: ForwardLink[];
    readonly latest: SkipBlock;
}
/**
 * Request information about a specific version of an instance. The node might not have this version in its cache,
 * so it might return an error.
 */
export declare class GetInstanceVersion extends Message<GetInstanceVersion> {
    static register(): void;
    readonly skipchainid: Buffer;
    readonly instanceid: Buffer;
    readonly version: Long;
}
/**
 * Request the latest version of this instance. The difference with this and GetProof is that it doesn't return a
 * full proof, but it includes the block where this instance has been created or modified.
 */
export declare class GetLastInstanceVersion extends Message<GetLastInstanceVersion> {
    static register(): void;
    readonly skipchainid: Buffer;
    readonly instanceid: Buffer;
}
/**
 * Returns the StateChangeBody and the block index where this instance has been created or modified. Contrary to
 * GetProof, this does not return a full proof that can be verified by the client. For this, the client has to
 * either request the block itself, or ask for a GetProof to get the latest version of the instance.
 */
export declare class GetInstanceVersionResponse extends Message<GetInstanceVersionResponse> {
    static register(): void;
    readonly statechange: StateChangeBody;
    readonly blockindex: number;
}
/**
 * Requests all known versions of a given instance. The nodes only hold a certain amount of versions, so this might
 * not go back all the way to the version where the instance has been created.
 */
export declare class GetAllInstanceVersion extends Message<GetAllInstanceVersion> {
    static register(): void;
    readonly skipchainid: Buffer;
    readonly instanceid: Buffer;
}
/**
 * Reply holding all known versions of this instance.
 */
export declare class GetAllInstanceVersionResponse extends Message<GetAllInstanceVersionResponse> {
    static register(): void;
    readonly statechanges: GetInstanceVersionResponse[];
}
