import { ISetRemoteDescriptionRequest } from './SetRemoteDescription';
export type PublishStatus = 'ok' | 'not-found' | 'geo-restricted' | 'geo-blocked' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'forbidden-tag' | 'missing-channel-or-room-id' | 'port-in-range-not-found' | 'failed';
export interface IPublishRequest {
    apiVersion: number;
    clientVersion: string;
    bearerToken: string;
    failureCount: number;
    httpRoundTripTime: number;
    name: string;
    options?: string[];
}
export interface IPublishWithOfferRequest extends IPublishRequest {
    setRemoteDescription: ISetRemoteDescriptionRequest;
    createAnswerDescription: {
        streamId: string;
        apiVersion: number;
    };
}
export interface IPublishWithoutOfferRequest extends IPublishRequest {
    createOfferDescription: {
        streamId: string;
        apiVersion: number;
    };
}
export interface IPublishSuccessResponse {
    status: 'ok';
    streamId: string;
    sharedSecret: string;
    rtcConfiguration?: RTCConfiguration;
    setRemoteDescriptionResponse?: {
        sessionDescription: RTCSessionDescription;
    };
    createOfferDescriptionResponse?: {
        sessionDescription: RTCSessionDescription;
    };
    createAnswerDescriptionResponse?: {
        sessionDescription: RTCSessionDescription;
    };
}
export interface IPublishResponse {
    status: 'not-found' | 'geo-restricted' | 'geo-blocked' | 'unauthorized' | 'rate-limited' | 'capacity' | 'timeout' | 'forbidden-tag' | 'missing-channel-or-room-id' | 'port-in-range-not-found' | 'failed';
}
