import { NatsConnection, RequestManyOptions } from "./types";
import { QueuedIterator } from "./queued_iterator";
import { ServiceInfo, ServiceStats, ServiceVerb } from "./mod";
import { ServiceIdentity, ServiceSchema } from "./service";
export interface ServiceClient {
    /**
     * Pings services
     * @param name - optional
     * @param id - optional
     */
    ping(name?: string, id?: string): Promise<QueuedIterator<ServiceIdentity>>;
    /**
     * Requests all the stats from services
     * @param name
     * @param id
     */
    stats(name?: string, id?: string): Promise<QueuedIterator<ServiceStats>>;
    /**
     * Requests schema information from services
     * @param name
     * @param id
     */
    schema(name?: string, id?: string): Promise<QueuedIterator<ServiceSchema>>;
    /**
     * Requests info from services
     * @param name
     * @param id
     */
    info(name?: string, id?: string): Promise<QueuedIterator<ServiceInfo>>;
}
export declare class ServiceClientImpl implements ServiceClient {
    nc: NatsConnection;
    prefix: string | undefined;
    opts: RequestManyOptions;
    constructor(nc: NatsConnection, opts?: RequestManyOptions, prefix?: string);
    ping(name?: string, id?: string): Promise<QueuedIterator<ServiceIdentity>>;
    stats(name?: string, id?: string): Promise<QueuedIterator<ServiceStats>>;
    schema(name?: string, id?: string): Promise<QueuedIterator<ServiceSchema>>;
    info(name?: string, id?: string): Promise<QueuedIterator<ServiceInfo>>;
    q<T>(v: ServiceVerb, name?: string, id?: string): Promise<QueuedIterator<T>>;
}
