export declare type ThemeControlBarElement = {
    plugins?: boolean;
    screenshare?: boolean;
    invite?: boolean;
    participants?: boolean;
    chat?: boolean;
    reactions?: boolean;
    polls?: boolean;
    fullscreen?: boolean;
    layout?: boolean;
};
export declare type ThemeControlBar = {
    is_enabled: boolean;
    elements?: ThemeControlBarElement;
};
export declare type ThemeWaitingRoom = {
    is_enabled: boolean;
    enable_preview?: boolean;
    element?: HTMLElement | string;
};
export declare type ThemeHeader = {
    is_enabled: boolean;
    elements?: ThemeHeaderElement;
};
export declare type ThemeHeaderElement = {
    timer?: boolean;
    title?: boolean;
    logo?: string;
    participant_count?: boolean;
    change_layout?: boolean;
};
export declare type ThemeColor = {
    primary: string;
    secondary: string;
    text: string;
    background: string;
};
export declare type ThemeDimention = {
    width: number;
    height: number;
};
export declare enum WaitingRoomTypes {
    skip = "SKIP",
    onAccept = "ON_ACCEPT",
    skipOnPrivilegedUserEntry = "SKIP_ON_PRIVILEGED_USER_ENTRY",
    skipOnAccept = "ON_ACCEPT"
}
declare type PluginConfig = {
    defaultAccess: 'blacklist' | 'whitelist';
    handlesViewOnly?: boolean;
};
export declare type PluginPermissionsTypes = {
    can_close: boolean;
    can_start: boolean;
    can_edit_acl?: boolean;
    config?: {
        [pluginId: string]: PluginConfig;
    };
};
export declare type PollsPermissionsTypes = {
    can_create: boolean;
    can_vote: boolean;
    can_view: boolean;
};
export declare type ProducePermissionsTypes = {
    video: StreamPermissionTypes;
    audio: boolean;
    screenshare: StreamPermissionTypes;
};
export declare type StreamPermissionTypes = {
    allow: boolean;
    quality: 'hd' | 'vga' | 'qvga' | 'full';
    frame_rate: number;
};
export declare type ChatPermissionTypes = {
    public: PublicChatPermissionTypes;
    private?: PrivateChatPermissionTypes;
};
export declare type PublicChatPermissionTypes = {
    can_send: boolean;
    text: boolean;
    files: boolean;
};
export declare type PrivateChatPermissionTypes = {
    can_send: boolean;
    can_receive: boolean;
    text: boolean;
    files: boolean;
};
export declare enum DyteViewTypes {
    groupCall = "GROUP_CALL",
    webinar = "WEBINAR",
    audioRoom = "AUDIO_ROOM"
}
export declare type AloneHereType = {
    is_enabled: boolean;
    element?: HTMLElement;
};
export declare type RoleType = {
    accept_waiting_requests: boolean;
    accept_present_requests?: boolean;
    request_produce: boolean;
    can_allow_participant_audio: boolean;
    can_allow_participant_screensharing: boolean;
    can_allow_participant_video: boolean;
    request_kick_participant: boolean;
    kick_participant: boolean;
    pin_participant: boolean;
    can_record: boolean;
    can_edit_display_name: boolean;
    waiting_room_type: WaitingRoomTypes;
    plugins: PluginPermissionsTypes;
    polls: PollsPermissionsTypes;
    produce: ProducePermissionsTypes;
    chat: ChatPermissionTypes;
    reactions: boolean;
    hidden_participant?: boolean;
    is_recorder?: boolean;
    show_participant_list: boolean;
    can_present: boolean;
    can_change_participant_role: boolean;
    view_type: DyteViewTypes;
    can_change_theme?: boolean;
};
export declare type ThemeGridType = {
    multi: {
        maxVideoCount: number;
        videoFit: string;
    };
    single: {
        maxVideoCount: number;
        videoFit: string;
    };
    defaultView: string;
};
export declare type ThemeBodyType = {
    setup_screen?: {
        is_enabled: boolean;
    };
    waiting_room?: ThemeWaitingRoom;
    control_bar?: ThemeControlBar;
    header?: ThemeHeader;
    colors?: ThemeColor;
    dimensions?: ThemeDimention;
    alone_here?: AloneHereType;
    pip_mode?: boolean;
    plugins?: string[];
    auto_tune?: boolean;
    grid?: ThemeGridType;
};
export declare type DefaultDyteConfig = {
    theme: ThemeBodyType;
    permissions: RoleType;
    version?: "string";
};
export interface UIConfigTypes {
    waitingRoom?: {
        roomElement?: any;
        showSelf?: boolean;
    };
    controlBar?: boolean;
    controlBarElements?: {
        plugins?: boolean;
        screenShare?: boolean;
        share?: boolean;
        participants?: boolean;
        chat?: boolean;
        polls?: boolean;
        fullscreen?: boolean;
    };
    header?: boolean;
    headerElements?: {
        clock?: boolean;
        title?: boolean;
        logo?: boolean;
        participantCount?: boolean;
    };
    aloneHereElement?: boolean;
    logo?: string;
    colors?: {
        primary: string;
        secondary: string;
        textPrimary: string;
        videoBackground: string;
    };
    dimensions?: {
        width: number;
        height: number;
    };
    grid?: {
        multi?: {
            maxVideoCount?: number;
        };
    };
}
export declare enum WaitingRoomConversionToV1Type {
    SKIP = "skip",
    SKIP_ON_PRIVILEGED_USER_ENTRY = "skipOnPrivilegedUserEntry",
    ON_ACCEPT = "skipOnAccept"
}
export interface PresetRoleV1Type {
    permissions: {
        acceptWaitingRequests: boolean;
        disableParticipantAudio: boolean;
        disableParticipantScreensharing: boolean;
        disableParticipantVideo: boolean;
        kickParticipants: boolean;
        pinParticipant: boolean;
        allowRecording?: boolean;
        editDisplayName?: boolean;
    };
    waitingRoom: WaitingRoomConversionToV1Type;
    plugins: {
        close: boolean;
        start: boolean;
        canEditAcl?: boolean;
    };
    pluginConfig: {
        hostOnlyControl?: string[];
        handlesViewOnly?: string[];
    };
    produce: {
        video: boolean;
        audio: boolean;
        screenshare: boolean;
        polls: boolean;
        chat?: {
            text: boolean;
            files: boolean;
        };
        reactions: boolean;
    };
    flags?: {
        hiddenParticipant?: boolean;
        recorder?: boolean;
    };
    webinar?: {
        viewOnly: boolean;
        requestToJoinStage: boolean;
    };
}
export interface PresetV1Type {
    role: PresetRoleV1Type;
    uiConfig: UIConfigTypes;
    roomViewType?: "webinar" | "audioRoom" | "groupCall";
}
export {};
