import { Tracer } from '../stats';
interface BrowserPermissionConfig {
    constraints: DisplayMediaStreamOptions;
    queryName: PermissionName;
    tracer: Tracer | undefined;
}
export type BrowserPermissionState = PermissionState | 'prompting';
export declare class BrowserPermission {
    private readonly permission;
    private ready;
    private disposeController;
    private state;
    private wasPrompted;
    private listeners;
    private logger;
    constructor(permission: BrowserPermissionConfig);
    dispose(): void;
    getState(): Promise<BrowserPermissionState>;
    prompt({ forcePrompt, throwOnNotAllowed, }?: {
        forcePrompt?: boolean;
        throwOnNotAllowed?: boolean;
    }): Promise<boolean>;
    listen(cb: (state: BrowserPermissionState) => void): () => boolean;
    asObservable(): import("rxjs").Observable<boolean>;
    asStateObservable(): import("rxjs").Observable<BrowserPermissionState>;
    getIsPromptingObservable(): import("rxjs").Observable<boolean>;
    private getStateObservable;
    private setState;
}
export {};
