import { Context } from './context';
import { PermissionStatusFake } from './permissions/PermissionStatusFake';
export declare enum RequestedMediaInput {
    Microphone = "Microphone",
    Camera = "Camera"
}
export declare type PermissionPromptAction = 'dismiss' | 'allow' | 'block';
export interface PermissionPrompt {
    requestedPermissions(): RequestedMediaInput[];
    takeAction(action: PermissionPromptAction): void;
}
export interface PermissionRequest {
    deviceKind: MediaDeviceKind;
    granted: () => void;
    blocked: () => void;
}
export declare type UserConsent = {
    camera: PermissionState;
    microphone: PermissionState;
};
export declare class UserConsentTracker {
    private readonly _context;
    private readonly _userConsent;
    private readonly _trackedPermissionStatus;
    private _pendingPermissionRequest;
    constructor(_context: Context, _userConsent: UserConsent);
    permissionStatusFor(kind: keyof UserConsent): PermissionStatusFake;
    setPermissionFor(kind: keyof UserConsent, state: PermissionState): void;
    requestPermissionFor(permissionRequest: PermissionRequest): void;
    private permissionStateFor;
    private permissionGrantedFor;
    private permissionBlockedFor;
    deviceAccessPrompt(): Promise<PermissionPrompt>;
    private permissionPromptFor;
    accessAllowedFor(kind: MediaDeviceKind): boolean;
}
//# sourceMappingURL=UserConsentTracker.d.ts.map