import { Observable } from 'rxjs';
import { AudioDeviceManager } from './AudioDeviceManager';
import { ScreenShareState } from './ScreenShareState';
import { Call } from '../Call';
import { AudioBitrateProfile } from '../gen/video/sfu/models/models';
import { ScreenShareSettings } from '../types';
export declare class ScreenShareManager extends AudioDeviceManager<ScreenShareState, DisplayMediaStreamOptions> {
    constructor(call: Call);
    setup(): void;
    /**
     * Will enable screen share audio options on supported platforms.
     *
     * Note: for ongoing screen share, audio won't be enabled until you
     * re-publish the screen share stream.
     */
    enableScreenShareAudio(): void;
    /**
     * Will disable screen share audio options on supported platforms.
     */
    disableScreenShareAudio(): Promise<void>;
    /**
     * Returns the current screen share settings.
     */
    getSettings(): ScreenShareSettings | undefined;
    /**
     * Sets the current screen share settings.
     *
     * @param settings the settings to set.
     */
    setSettings(settings: ScreenShareSettings | undefined): void;
    protected getDevices(): Observable<MediaDeviceInfo[]>;
    protected getStream(constraints: DisplayMediaStreamOptions): Promise<MediaStream>;
    protected doSetAudioBitrateProfile(profile: AudioBitrateProfile): void;
    protected stopPublishStream(): Promise<void>;
    /**
     * Overrides the default `select` method to throw an error.
     */
    select(): Promise<void>;
}
