import { HttpClient, LogFormat, LogLevel } from '@skyway-sdk/common';
import { ConsumerOptions } from 'mediasoup-client/lib/Consumer';
import { RtpCapabilities } from 'mediasoup-client/lib/RtpParameters';
import { IceParameters, TransportOptions } from 'mediasoup-client/lib/Transport';
export declare class SfuRestApiClient {
    private _token;
    readonly options: SfuApiOptions;
    readonly endpoint: string;
    readonly http: HttpClient;
    private readonly _headers;
    constructor(_token: string, _options: Partial<SfuApiOptions> & Pick<SfuApiOptions, 'log'>);
    updateToken(token: string): void;
    private _commonErrorHandler;
    createBot({ appId, channelId, }: {
        appId: string;
        channelId: string;
    }): Promise<string>;
    deleteBot({ botId }: {
        botId: string;
    }): Promise<void>;
    startForwarding({ botId, publicationId, maxSubscribers, contentType, publisherId, }: {
        botId: string;
        publicationId: string;
        maxSubscribers: number;
        contentType: ContentType;
        publisherId: string;
    }): Promise<{
        forwardingId: string;
        broadcasterTransportId: string;
        rtpCapabilities?: RtpCapabilities | undefined;
        broadcasterTransportOptions?: TransportOptions | undefined;
        identifierKey: string;
    }>;
    createProducer({ botId, forwardingId, transportId, producerOptions, }: {
        botId: string;
        forwardingId: string;
        transportId: string;
        producerOptions: object;
    }): Promise<{
        producerId: string;
    }>;
    /**@throws {maxSubscriberExceededError,} */
    createConsumer({ botId, forwardingId, rtpCapabilities, subscriptionId, subscriberId, spatialLayer, originPublicationId, }: {
        botId: string;
        forwardingId: string;
        rtpCapabilities: RtpCapabilities;
        subscriptionId: string;
        subscriberId: string;
        spatialLayer?: number;
        originPublicationId: string;
    }): Promise<{
        consumerOptions: ConsumerOptions;
        producerId: string;
        transportId: string;
        transportOptions: TransportOptions | undefined;
    }>;
    connect({ transportId, dtlsParameters, }: {
        transportId: string;
        dtlsParameters: object;
    }): Promise<{
        transportId: string;
    }>;
    changeConsumerLayer({ transportId, consumerId, spatialLayer, publicationId, }: {
        transportId: string;
        consumerId: string;
        spatialLayer: number;
        publicationId: string;
    }): Promise<{
        transportId: string;
    }>;
    stopForwarding({ botId, forwardingId, }: {
        botId: string;
        forwardingId: string;
    }): {
        promise: Promise<void>;
        fulfilled: any;
    };
    iceRestart({ transportId }: {
        transportId: string;
    }): Promise<IceParameters>;
    getRtpCapabilities({ botId, forwardingId, originPublicationId, }: {
        botId: string;
        forwardingId: string;
        originPublicationId: string;
    }): Promise<RtpCapabilities>;
    confirmSubscription({ forwardingId, subscriptionId, identifierKey, }: {
        forwardingId: string;
        subscriptionId: string;
        identifierKey: string;
    }): Promise<{
        message: string;
        operationId: string;
    }>;
}
declare type ContentType = 'video' | 'audio';
export declare type SfuApiOptions = {
    domain: string;
    secure: boolean;
    version: number;
    log: {
        level: LogLevel;
        format: LogFormat;
    };
};
export {};
//# sourceMappingURL=api.d.ts.map