import type Registration from './processor/callee/generic/registration';
import type Subscription from './processor/subscriber/generic/subscription';
import type { CallOptions } from './types/messages/CallMessage';
import type { PublishOptions } from './types/messages/PublishMessage';
import type { RegisterOptions } from './types/messages/RegisterMessage';
import type { WelcomeDetails } from './types/messages/WelcomeMessage';
import type { SubscribeOptions } from './types/messages/SubscribeMessage';
import type { WampID, WampDict, WampList, WampURI } from './types/messages/MessageTypes';
import type { Options, CallHandler, CallReturn, EventHandler } from './types/Connection';
declare class Connection {
    private readonly _options;
    private readonly _endpoint;
    private readonly _realm;
    private readonly _serializer;
    private _processors;
    private _sessionId;
    private _transport;
    private _state;
    private _openingDeferred;
    private _openedDeferred;
    private _closedDeferred;
    private _closeRequested;
    private _isRetrying;
    private _retryTimer;
    private _maxRetries;
    private _retryCount;
    private _retryDelayInitial;
    private _retryDelay;
    private _retryDelayMax;
    private readonly _logger;
    get endpoint(): string;
    get realm(): string;
    get sessionId(): number | null;
    get isConnected(): boolean;
    get isConnecting(): boolean;
    get isRetrying(): boolean;
    get onOpen(): Promise<void>;
    constructor(endpoint: string, realm: string, options: Options);
    open(): Promise<WelcomeDetails>;
    close(): Promise<void>;
    call<A extends WampList = WampList, K extends WampDict = WampDict, T = any>(uri: WampURI, args?: A, kwargs?: K, opts?: CallOptions): CallReturn<T>;
    register<A extends WampList = WampList, K extends WampDict = WampDict, T = any>(uri: WampURI, handler: CallHandler<A, K, T>, opts?: RegisterOptions): Promise<Registration>;
    subscribe<A extends WampList = WampList, K extends WampDict = WampDict>(uri: WampURI, handler: EventHandler<A, K>, opts?: SubscribeOptions): Promise<Subscription>;
    publish<A extends WampList = WampList, K extends WampDict = WampDict>(uri: WampURI, args?: A, kwargs?: K, opts?: PublishOptions): Promise<WampID | undefined>;
    private processSessionMessage;
    private processMessage;
    private sendHello;
    private handleTransportEvent;
    private handleProtocolViolation;
    private handleOpen;
    private handleClose;
    private _open;
    private retryOpening;
    private resetRetryTimer;
    private resetRetry;
    private nextTryInfos;
    private resetConnectionInfos;
}
export default Connection;
