import { Glue42Core } from "@glue42/core";
import { UnsubscribeFunction } from "callback-registry";
import { RequestId } from "../core/types/request-id";
import { BloombergEvent } from "../core/types";
import { ConnectionStatusSubscriber, CreateRequestArgs, CreateSubscriptionRequestArgs } from "./types";
import { Logger } from "../logger/types";
import { ProtocolMethods } from "../bbg-market-data-api";
export interface EventsCallback {
    (args: {
        requestCorrelationId: RequestId;
        msg: BloombergEvent<any>;
    }): void;
}
/**
 * MDF API facade.
 */
export declare class MdfBridge {
    private readonly interop;
    private readonly apiId;
    private readonly apiVersion;
    private readonly protocolMethods;
    private readonly logger?;
    private readonly eventsCallbackMethodName;
    private readonly registry;
    private readonly registerEventsCallbackPW;
    constructor(interop: Glue42Core.Interop.API, apiId: string, apiVersion: string, protocolMethods: ProtocolMethods, logger?: Logger | undefined);
    get eventsCallbackMethod(): string;
    /**
     *  Returns a promise which either resolves when the callback method was registered successfully or rejects when registration failed.
     */
    ready(): Promise<void>;
    /**
     * Subscribe to receive events for a particular request.
     */
    onEvent(requestId: RequestId, handler: (event: BloombergEvent<any>) => void): UnsubscribeFunction;
    /**
     * Invokes the MDF API to create a non-subscription request.
     */
    createRequest(args: CreateRequestArgs): Promise<void>;
    /**
     * Invokes the MDF API to create a subscription request.
     */
    createSubscriptionRequest(args: CreateSubscriptionRequestArgs): Promise<void>;
    /**
     * Invokes the MDF API to cancel a request.
     */
    closeRequest(requestId: RequestId, reason: string): Promise<void>;
    /**
     * Invokes the MDF API to close a session.
     */
    closeSession(sessionName: string): Promise<void>;
    /**
     * Subscribes to MDF API Interop stream that streams Bloomberg Heartbeat.
     */
    subscribeForConnectionStatus(retryPeriodMsecs: number, subscriber: ConnectionStatusSubscriber): Promise<void>;
    private registerEventsCallbackMethod;
    private invokeCreateRequest;
}
