import { JsmsConnection, JsmsDeferred, JsmsMessage, JsmsQueue, JsmsTopic } from "jsms";
export declare class ChromiumConnection extends JsmsConnection {
    private defaultTimeToLive;
    private maxHandshakeRetries;
    private globalNS;
    static readonly HANDSHAKE_INIT = "/jsms-ext-chromium/handshake/init";
    static readonly HANDSHAKE_CLIENT_READY = "/jsms-ext-chromium/handshake/client/ready";
    static readonly HANDSHAKE_SERVER_READY = "/jsms-ext-chromium/handshake/server/ready";
    static readonly DEFAULT_TIME_TO_LIVE: number;
    static readonly DEFAULT_HANDSHAKE_RETRY_COUNT: number;
    static readonly DEFAULT_HANDSHAKE_RETRY_DELAY: number;
    private readonly logger;
    private sendFunction;
    private responseDeferreds;
    private currentHandshakeRetries;
    /**
     * @param defaultTimeToLive will be used to calculate expiration time when no
     *        custom value is provided to the send function
     * @param maxHandshakeRetries specifies how often the handshake will be retried
     * @param globalNS is only used by unit tests -
     *        in production code you should ignore it and just leave it undefined
     */
    constructor(defaultTimeToLive?: number, maxHandshakeRetries?: number, globalNS?: any);
    private onMessage;
    private handleResponse;
    createQueue(queueName: string): JsmsQueue;
    createTopic(topicName: string): JsmsTopic;
    send(message: JsmsMessage): JsmsDeferred<JsmsMessage>;
    private getSendFunction;
    private isCEF;
    private initCEFConnection;
    private isWebView2;
    private initWebView2Connection;
    private handleSuccessResponse;
    private handleErrorResponse;
    private sendToCEF;
    private sendToWebView2;
    private handleExpiration;
    sendHandshake(): JsmsDeferred<JsmsMessage>;
    private sendHandshakeInternal;
    private sendHandshakeInit;
    private sendServerReady;
    private resolveHandshake;
    private retryHandshake;
}
