import { RawGtv } from "../gtv/types";
import { SignerPair } from "../gtx/types";
import { StringPath } from "../merkle/types";
export type RestClientConfig = {
    endpointPool: readonly string[];
    pool: {
        maxSockets: number;
    };
    pollingInterval: number;
    attemptsPerEndpoint: number;
    attemptInterval: number;
};
export type RequestOptions = {
    method: string;
    url: string;
    json: boolean;
    body?: object;
    pool: {
        maxSockets: number;
    };
};
export type QueryObject = {
    type: string;
    [arg: string]: RawGtv;
};
export type QueryArguments = {
    [arg: string]: RawGtv;
};
export type QueryObjectGTV = [name: string, args: Arg];
export type Arg = {
    [arg: string]: RawGtv;
};
export type ServerReturnProof = {
    hash: string;
    blockHeader: string;
    signatures: SignerPair[];
    merklePath: StringPath;
};
export declare enum ResponseStatus {
    Confirmed = "confirmed",
    Rejected = "rejected",
    Unknown = "unknown",
    Waiting = "waiting"
}
export type TransactionObject = {
    tx: string;
};
export type StatusObject = {
    status: ResponseStatus;
    rejectReason?: string;
};
export type PostRequestObjects = TransactionObject | QueryObject;
export type GetResponseObjects = StatusObject | TransactionObject | ServerReturnProof;
export type FailOverConfig = {
    attemptsPerEndpoint?: number;
    attemptInterval?: number;
};
export type ResponseObject = {
    error: Error;
    statusCode: number;
    rspBody: any;
};
export declare enum Method {
    GET = "get",
    POST = "post"
}
