import { CallbackRegistry, UnsubscribeFunction } from "callback-registry";
import { RequestId } from "./types/request-id";
import { RequestConfig } from "../request-configs";
import { RequestStatus } from "../request-status";
import { BloombergError, EventHandler, EventMessageInner, RequestStatusChangedHandler } from "./types";
import { OperationArgs } from "./../bridge/types";
import { BaseRequestOpenOptions } from "./types/open-request-options";
import { SessionsManager } from "./../sessions/sessions-manager";
export declare type EventMessageProcessorResult = {
    action: "close";
} | {
    action: "continue";
} | {
    action: "fail";
    error: Error | BloombergError;
} | {
    action: "complete";
};
export declare type EventMessageProcessorFn = (eventMessage: EventMessageInner) => Promise<EventMessageProcessorResult>;
/**
 * Represents the lifecycle of a non-subscription request.
 */
export declare abstract class BaseRequest<TArgs> {
    readonly sessionManager: SessionsManager;
    readonly config: RequestConfig;
    readonly operationArgs: OperationArgs<TArgs>;
    protected readonly registry: CallbackRegistry;
    protected requestId: RequestId;
    protected _status: RequestStatus;
    private sessionInstance;
    constructor(sessionManager: SessionsManager, config: RequestConfig, operationArgs: OperationArgs<TArgs>);
    protected openRequest(options: BaseRequestOpenOptions & {
        messageProcessor: EventMessageProcessorFn;
    }): Promise<void>;
    protected onEvent(callback: EventHandler): UnsubscribeFunction;
    protected closeRequest(): Promise<void>;
    protected onRequestStatusChanged(callback: RequestStatusChangedHandler): UnsubscribeFunction;
    private processEventMessage;
    private requestDisposed;
    private requestOpened;
    private requestActivated;
    private requestClosedSuccessfully;
    private requestFailed;
    private requestCompleted;
    private raiseRequestStatusChanged;
}
