/// <reference types="node" />
import { DictPair, RawGtv } from "../gtv/types";
import { FailoverStrategy } from "../restclient/enums";
import { FailOverConfig } from "../restclient/types";
export type KeyPair = {
    privKey: Buffer;
    pubKey?: Buffer;
};
export type ClientConfig = {
    endpointPool: readonly string[];
    blockchainRid: string;
    pollingInterval: number;
    failoverStrategy: FailoverStrategy;
    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<TReturn extends RawGtv, TArgs extends DictPair | undefined = DictPair> = {
    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 ConfirmationProof = {
    hash: Buffer;
    blockHeader: Buffer;
    witness: Buffer;
    merkleProofTree: RawGtv;
    txIndex: number;
};
export type TransactionInfo = {
    blockRid: Buffer;
    blockHeight: number;
    blockHeader: Buffer;
    witness: Buffer;
    timestamp: number;
    txRid: Buffer;
    txHash: Buffer;
    txData: Buffer;
};
export type TransactionInfoResponse = {
    blockRID: string;
    blockHeight: number;
    blockHeader: string;
    witness: string;
    timestamp: number;
    txRID: string;
    txHash: string;
    txData: string;
};
