import { IBetterLogger } from "@codiac.io/codiac-common";
import { SingleResult, Result } from '@codiac.io/codiac-common/contracts';
import { AsyncAck } from '../message-contracts';
import { IMessagingClient } from "@codiac.io/codiac-messaging/dist/nats/client";
/** Triggers and renders real time status for Long Running Processes.
 *
 * That is, it fires an async request to trigger the process,
 * then monitors a socket for real time status messages,
 * and renders them in sequential order.
 */
export declare class LrpWatcher {
    private msgClient;
    private logger;
    constructor(msgClient: IMessagingClient, logger: IBetterLogger);
    private statusHandlerId;
    private removeStatusListeners;
    /** Opens and closes its own web socket.
     * Throws any errors.
     * Renders all real time status messages as logs off the main operation.
     */
    triggerAndWatch<TResult extends Result, TContext extends object>(mainOpCode: string, opIngTitle: string, trigger: (socketId: string) => Promise<SingleResult<AsyncAck>>): Promise<TResult>;
}
