import { EventEmitter } from './event-emitter';
import { RDCDisplay, RDCDisplayConfiguration, RDCRoleType } from './interfaces';
export declare abstract class AbstractRTCAdapter<T> extends EventEmitter {
    protected rtcEngine: T;
    protected appId: string;
    protected role: RDCRoleType;
    constructor(appId: string, rtcEngine: T, role: RDCRoleType);
    abstract initialize(): void;
    abstract getDisplays(): Promise<RDCDisplay[]>;
    abstract join(streamId: number, channel: string, rtcToken: string): Promise<void>;
    abstract leave(): Promise<void>;
    abstract publish(display: RDCDisplay, configuration?: Partial<RDCDisplayConfiguration & {
        captureMouseCursor: boolean;
    }>, withAudio?: boolean): Promise<void>;
    abstract unpublish(): Promise<void>;
    abstract subscribe(streamId: number, attachEl: HTMLElement): Promise<void>;
    abstract unsubscribe(streamId: number): Promise<void>;
    abstract dispose(): Promise<void>;
    abstract updateDisplayConfiguration(configuration: Partial<RDCDisplayConfiguration & {
        captureMouseCursor: boolean;
    }>): Promise<void>;
}
