import { ISetRemoteDescriptionRequest } from './SetRemoteDescription';
export type SubscribeStatus = 'ok' | 'no-stream' | 'not-found' | 'geo-restricted' | 'geo-blocked' | 'unauthorized' | 'capacity' | 'rate-limited' | 'timeout' | 'forbidden-tag' | 'port-in-range-not-found' | 'failed';
export interface ISubscribeRequest {
    apiVersion: number;
    clientVersion: string;
    bearerToken: string;
    failureCount: number;
    httpRoundTripTime: number;
}
export interface ISubscribeWithOfferRequest extends ISubscribeRequest {
    setRemoteDescription: ISetRemoteDescriptionRequest;
    createAnswerDescription: {
        apiVersion: number;
    };
}
export interface ISubscribeWithoutOfferRequest extends ISubscribeRequest {
    createOfferDescription: {
        apiVersion: number;
    };
}
export interface ISubscribeSuccessResponse {
    status: 'ok';
    streamId: string;
    sharedSecret: string;
    lag: number;
    rtcConfiguration?: RTCConfiguration;
    setRemoteDescriptionResponse?: {
        sessionDescription: RTCSessionDescription;
    };
    createOfferDescriptionResponse?: {
        sessionDescription: RTCSessionDescription;
    };
    createAnswerDescriptionResponse?: {
        sessionDescription: RTCSessionDescription;
    };
    [key: string]: unknown;
}
export interface ISubscribeFailureResponse {
    status: SubscribeStatus;
}
