import { DispatchEndpoint } from "./dispatchEndpoint";
import { RequestDispatcher } from "./requestDispatcher";
import { Message } from "../message";
import { RequestContext } from "../operationContext";
/**
 * Represents a service in the dispatcher. Exposes the configuration options for the service.
 *
 * <uml>
 *  hide members
 *  hide circle
 *  RequestDispatcher *-- DispatchService : services
 *  DispatchService *-- DispatchEndpoint : endpoints
 *  DispatchService *- InstanceProvider : instanceProvider
 * </uml>
 */
export declare class DispatchService {
    dispatcher: RequestDispatcher;
    name: string;
    endpoints: DispatchEndpoint[];
    instanceProvider: InstanceProvider;
    /**
     * Specifies whether to create an [[OperationContext]] for operations in this service. The default value is 'false'.
     */
    createOperationContext: boolean;
    constructor(dispatcher: RequestDispatcher, name: string);
    /**
     * Validates that the service is correctly configured.
     */
    validate(): void;
    /**
     * Throws a configuration error.
     * @param message A message to display
     * @hidden
     */
    private _throwConfigError(message);
}
/**
 * Describes a type that can provide service insteances.
 */
export interface InstanceProvider {
    /**
     * Gets an instance of a service.
     * @param message The request message.
     * @param request The request context.
     */
    getInstance(message: Message, request: RequestContext): Object;
}
