import { DispatchEndpoint } from "./dispatchEndpoint";
import { Message } from "../message";
import { RequestContext } from "../operationContext";
/**
 * @hidden
 */
export declare class RequestHandler implements RequestContext {
    private _endpoint;
    private _request;
    private _correlationStates;
    private _finished;
    private _callback;
    private _errored;
    message: Message;
    prev: RequestHandler;
    next: RequestHandler;
    constructor(endpoint: DispatchEndpoint, request: RequestContext);
    /**
     * Process the request.
     * @param callback Called when processing completes.
     */
    process(callback: () => void): void;
    addListener(event: string, listener: Function): RequestContext;
    removeListener(event: string, listener: Function): RequestContext;
    private _handleRequest();
    /**
     * Reply to the request.
     * @param message The message to send as a reply.
     */
    reply(message?: Message): void;
    /**
     * Abort the request without normal error handling.
     */
    abort(): void;
    private _afterReceiveRequest();
    private _beforeSendReply(reply);
    private _invoke(operation, args);
    private _handleUncaughtException(err);
    private _handleError(err);
    private _sendFault(err);
}
