/// <reference types="node" />
/// <reference types="urijs" />
import { Agent } from "https";
import * as superagent from "superagent";
import { Discovery } from "../discovery/Discovery";
import { ServiceHandle } from "../discovery/ServiceHandle";
export declare abstract class ServiceClientBase {
    protected discovery: Discovery;
    protected adminToken: string;
    private authorizationHeaderName;
    private agent?;
    private tags?;
    protected abstract serviceName: string;
    protected abstract baseRoute: string;
    constructor(discovery: Discovery, adminToken: string, authorizationHeaderName: string, agent?: Agent, tags?: string[]);
    protected getServiceRoute(service: ServiceHandle): uri.URI;
    protected getBaseRoute(): Promise<uri.URI>;
    protected getRoute(...segments: string[]): Promise<string>;
    protected findService(): Promise<ServiceHandle>;
    protected findAllServices(): Promise<Array<ServiceHandle>>;
    protected executeRequest(request: superagent.SuperAgentRequest, settings?: {
        token?: string;
        retryOn404?: boolean;
        retryOn50x?: boolean;
    }): Promise<any>;
}
