import { Event } from '@skyway-sdk/common';
import type { Member } from '@skyway-sdk/model';
import { type ConnectionState, SignalingClient } from '@skyway-sdk/signaling-client';
import type { SkyWayChannelImpl } from '../channel';
import type { SkyWayContext } from '../context';
import type { RemoteMember } from '../member/remoteMember';
export declare function setupSignalingSession(context: SkyWayContext, channel: SkyWayChannelImpl, memberDto: Member): Promise<SignalingSession>;
export declare class SignalingSession {
    _client: SignalingClient;
    private context;
    readonly onConnectionFailed: Event<unknown>;
    readonly onConnectionStateChanged: Event<ConnectionState>;
    readonly onMessage: Event<MessageEvent>;
    closed: boolean;
    private _chunkedMessageBuffer;
    private _backoffUpdateSkyWayAuthToken;
    private _disposer;
    constructor(_client: SignalingClient, context: SkyWayContext);
    updateClient(client: SignalingClient): void;
    private _listen;
    private _updateSkyWayAuthToken;
    get connectionState(): ConnectionState;
    connect(): Promise<void>;
    close(): void;
    /**@throws {@link SkyWayError} */
    send(target: RemoteMember, data: object, 
    /**ms */
    timeout?: number): Promise<void>;
}
export interface MessageEvent {
    src: {
        name?: string;
        id: string;
    };
    data: Record<string, any>;
}
//# sourceMappingURL=signaling.d.ts.map