/// <reference types="node" />
import { RawGtv } from "../gtv/types";
import { FailOverConfig } from "../restclient/types";
export type KeyPair = {
    privKey: Buffer;
    pubKey?: Buffer;
};
export type QueryArguments = {
    [arg: string]: RawGtv;
};
export type ClientConfig = {
    endpointPool: readonly string[];
    blockchainRID: string;
    pollingInterval: number;
    attemptsPerEndpoint: number;
    attemptInterval: number;
};
export type NetworkSettings = {
    nodeURLPool?: string | string[];
    directoryNodeURLPool?: string | string[];
    blockchainRID?: string;
    blockchainIID?: number;
    pollingInterval?: number;
    failOverConfig?: FailOverConfig;
};
export interface TransactionReceipt {
    status: ResponseStatus;
    statusCode: number;
    transactionRID: Buffer;
}
export type SignedTransaction = Buffer;
export interface SignatureProvider {
    sign(digest: Buffer): Promise<Buffer>;
    readonly pubKey: Buffer;
}
export type RestClientQueryObject = {
    type: string;
    [arg: string]: RawGtv;
};
export type QueryObject<TArgs> = {
    name: string;
    args?: TArgs;
};
export type QueryCallback<TReturn> = (error: Error, response: TReturn) => void;
export type PrivKey = Buffer;
export type PubKey = Buffer;
export type Operation = {
    name: string;
    args?: RawGtv[];
};
export interface Transaction {
    operations: Operation[];
    signers: Buffer[];
}
export type StatusObject = {
    status: ResponseStatus;
    rejectReason?: string;
};
export declare enum ResponseStatus {
    Confirmed = "confirmed",
    Rejected = "rejected",
    Unknown = "unknown",
    Waiting = "waiting"
}
export type SignerPair = {
    pubKey: string;
    signature: string;
};
export type BufferSignerPair = {
    pubKey: Buffer;
    signature: Buffer;
};
export type Step = {
    side: number;
    hash: Buffer;
};
export type Path = Step[];
export type ResponseObjectProof = {
    hash: Buffer;
    blockHeader: Buffer;
    witness: Buffer;
    merkleProofTree: RawGtv;
    txIndex: number;
};
