import { Event, type SkyWayError } from '@skyway-sdk/common';
import type { SkyWayContext } from '../../../../context';
import type { AnalyticsSession } from '../../../../external/analytics';
import type { IceManager } from '../../../../external/ice';
import type { SignalingSession } from '../../../../external/signaling';
import type { RemoteStream } from '../../../../media/stream';
import type { LocalPersonImpl } from '../../../../member/localPerson';
import type { RemoteMember } from '../../../../member/remoteMember';
import type { SubscriptionImpl } from '../../../../subscription';
import type { TransportConnectionState } from '../../../interface';
import type { P2PMessage } from '.';
import { Peer } from './peer';
export declare class Receiver extends Peer {
    readonly id: string;
    readonly onConnectionStateChanged: Event<TransportConnectionState>;
    readonly onStreamAdded: Event<{
        publicationId: string;
        stream: RemoteStream;
    }>;
    readonly onError: Event<SkyWayError<Record<string, any>>>;
    private _connectionState;
    private _publicationInfo;
    streams: {
        [publicationId: string]: RemoteStream;
    };
    private _subscriptions;
    private readonly _promiseQueue;
    private _disposer;
    private _log;
    constructor(context: SkyWayContext, iceManager: IceManager, signaling: SignalingSession, analytics: AnalyticsSession | undefined, localPerson: LocalPersonImpl, endpoint: RemoteMember);
    private _setConnectionState;
    private _setupTransportAccessForStream;
    private _getCodecFromSdp;
    get hasMedia(): boolean;
    close(): void;
    add(subscription: SubscriptionImpl): void;
    remove(subscriptionId: string): void;
    /**@throws {SkyWayError} */
    private _validateRemoteOffer;
    private get isWrongSignalingState();
    /**@throws {SkyWayError} */
    private _handleSenderProduce;
    /**@throws {SkyWayError} */
    private _handleSenderUnproduce;
    /**@throws {SkyWayError} */
    private _handleSenderRestartIce;
    private sendAnswer;
    get subscriptions(): {
        [subscriptionId: string]: SubscriptionImpl<RemoteStream>;
    };
}
export interface ReceiverAnswerMessage extends P2PMessage {
    kind: 'receiverAnswerMessage';
    payload: {
        sdp: RTCSessionDescriptionInit;
    };
}
//# sourceMappingURL=receiver.d.ts.map