import { HttpClient, type LogFormat, type LogLevel } from '@skyway-sdk/common';
import type { ConsumerOptions } from 'mediasoup-client/lib/Consumer';
import type { RtpCapabilities } from 'mediasoup-client/lib/RtpParameters';
import type { 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, forceTCP, }: {
        botId: string;
        publicationId: string;
        maxSubscribers: number;
        contentType: ContentType;
        publisherId: string;
        forceTCP?: boolean;
    }): Promise<{
        forwardingId: string;
        broadcasterTransportId: string;
        rtpCapabilities?: RtpCapabilities | undefined;
        broadcasterTransportOptions?: TransportOptions<import("mediasoup-client/lib/types").AppData> | 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, forceTCP, }: {
        botId: string;
        forwardingId: string;
        rtpCapabilities: RtpCapabilities;
        subscriptionId: string;
        subscriberId: string;
        spatialLayer?: number;
        originPublicationId: string;
        forceTCP?: boolean;
    }): 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