import { OnInit, OnChanges, SimpleChanges } from '@angular/core';
import { Participant, ShowAlert } from '../../../@types/types';
import { Socket } from 'socket.io-client';
import { UpdateParticipantPermission, PermissionLevel } from '../../../methods/permissions-methods/update-participant-permission.service';
import { BulkUpdateParticipantPermissions } from '../../../methods/permissions-methods/bulk-update-participant-permissions.service';
import { UpdatePermissionConfig, PermissionConfig, PermissionCapabilities } from '../../../methods/permissions-methods/update-permission-config.service';
import * as i0 from "@angular/core";
export interface PermissionsModalParameters {
    participants: Participant[];
    member: string;
    islevel: string;
    socket: Socket;
    roomName: string;
    showAlert?: ShowAlert;
    permissionConfig?: PermissionConfig;
    updatePermissionConfig?: (config: PermissionConfig) => void;
    getUpdatedAllParams: () => PermissionsModalParameters;
    audioSetting?: string;
    videoSetting?: string;
    screenshareSetting?: string;
    chatSetting?: string;
}
type PermissionValue = PermissionCapabilities[keyof PermissionCapabilities];
export declare class PermissionsModalComponent implements OnInit, OnChanges {
    private updateParticipantPermissionService;
    private bulkUpdateParticipantPermissionsService;
    private updatePermissionConfigService;
    isPermissionsModalVisible: boolean;
    onPermissionsClose: () => void;
    parameters: PermissionsModalParameters;
    backgroundColor: string;
    position: string;
    faTimes: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faUserShield: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faUsers: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faCog: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faChevronUp: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faChevronDown: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faCheck: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faClock: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faBan: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faMicrophone: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faVideo: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faDesktop: import("@fortawesome/fontawesome-common-types").IconDefinition;
    faComment: import("@fortawesome/fontawesome-common-types").IconDefinition;
    activeTab: 'users' | 'config';
    searchFilter: string;
    selectedParticipants: Set<string>;
    expandedLevel: 'level0' | 'level1' | null;
    localConfig: PermissionConfig;
    participantsState: Participant[];
    constructor(updateParticipantPermissionService: UpdateParticipantPermission, bulkUpdateParticipantPermissionsService: BulkUpdateParticipantPermissions, updatePermissionConfigService: UpdatePermissionConfig);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    computeInitialConfig(): PermissionConfig;
    updateStateFromParams(): void;
    get isHost(): boolean;
    get filteredParticipants(): Participant[];
    get participantsByLevel(): {
        '1': Participant[];
        '0': Participant[];
    };
    getLevelLabel(level: '1' | '0'): string;
    getLevelColor(level: '1' | '0'): string;
    hasSelected(participantName: string): boolean;
    handleParticipantSelect(participantName: string): void;
    handleSelectAll(): void;
    handleBulkUpdate(newLevel: PermissionLevel): Promise<void>;
    handleSingleUpdate(participant: Participant, newLevel: PermissionLevel): Promise<void>;
    handleConfigChange(level: 'level0' | 'level1', capability: keyof PermissionCapabilities, value: PermissionValue): void;
    handleSaveConfig(): Promise<void>;
    toggleLevelConfig(level: 'level0' | 'level1'): void;
    levels: ('1' | '0')[];
    configLevels: ('level0' | 'level1')[];
    capabilities: (keyof PermissionCapabilities)[];
    readonly chatOptions: PermissionCapabilities['useChat'][];
    readonly standardOptions: PermissionCapabilities['useMic'][];
    getParticipantsForLevel(level: '1' | '0'): Participant[];
    getConfigValue(level: 'level0' | 'level1', capability: keyof PermissionCapabilities): PermissionValue;
    isSelectedConfigOption(level: 'level0' | 'level1', capability: keyof PermissionCapabilities, value: PermissionValue): boolean;
    getCapabilityIcon(capability: keyof PermissionCapabilities): import("@fortawesome/fontawesome-common-types").IconDefinition;
    getCapabilityName(capability: keyof PermissionCapabilities): "Chat" | "Screen Share" | "Microphone" | "Camera";
    getStatusIcon(status: string): import("@fortawesome/fontawesome-common-types").IconDefinition;
    getStatusColor(status: string): "#ef4444" | "#f59e0b" | "#22c55e";
    getOptionsForCapability(capability: keyof PermissionCapabilities): readonly PermissionValue[];
    static ɵfac: i0.ɵɵFactoryDeclaration<PermissionsModalComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PermissionsModalComponent, "app-permissions-modal", never, { "isPermissionsModalVisible": { "alias": "isPermissionsModalVisible"; "required": false; }; "onPermissionsClose": { "alias": "onPermissionsClose"; "required": false; }; "parameters": { "alias": "parameters"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "position": { "alias": "position"; "required": false; }; }, {}, never, never, true, never>;
}
export {};
