import React from 'react';
import { Socket } from 'socket.io-client';
import { ShowAlert } from '../../@types/types';
import { ModifySettingsOptions } from '../../methods/settingsMethods/modifySettings';
/**
 * Interface defining the parameters required by the EventSettingsModal component.
 */
export interface EventSettingsModalParameters {
    meetingDisplayType: string;
    autoWave: boolean;
    forceFullDisplay: boolean;
    meetingVideoOptimized: boolean;
    roomName: string;
    socket: Socket;
    showAlert?: ShowAlert;
}
/**
 * Interface defining the options (props) for the EventSettingsModal component.
 */
export interface EventSettingsModalOptions {
    /**
     * Determines if the modal is visible.
     */
    isEventSettingsModalVisible: boolean;
    /**
     * Callback function to close the modal.
     */
    onEventSettingsClose: () => void;
    /**
     * Callback function to modify event settings.
     * @default modifySettings
     */
    onModifyEventSettings?: (options: ModifySettingsOptions) => Promise<void>;
    /**
     * Position of the modal on the screen.
     * @default "topRight"
     */
    position?: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';
    /**
     * Background color of the modal.
     * @default "#83c0e9"
     */
    backgroundColor?: string;
    /**
     * Initial audio setting.
     */
    audioSetting: string;
    /**
     * Initial video setting.
     */
    videoSetting: string;
    /**
     * Initial screenshare setting.
     */
    screenshareSetting: string;
    /**
     * Initial chat setting.
     */
    chatSetting: string;
    /**
     * Callback function to update audio setting.
     */
    updateAudioSetting: (setting: string) => void;
    /**
     * Callback function to update video setting.
     */
    updateVideoSetting: (setting: string) => void;
    /**
     * Callback function to update screenshare setting.
     */
    updateScreenshareSetting: (setting: string) => void;
    /**
     * Callback function to update chat setting.
     */
    updateChatSetting: (setting: string) => void;
    /**
     * Callback function to update modal visibility.
     */
    updateIsSettingsModalVisible: (isVisible: boolean) => void;
    /**
     * Name of the room.
     */
    roomName: string;
    /**
     * Socket object for communication.
     */
    socket: Socket;
    /**
     * Callback function to show alerts.
     */
    showAlert?: ShowAlert;
}
export type EventSettingsModalType = (options: EventSettingsModalOptions) => JSX.Element;
/**
 * EventSettingsModal provides an interface to configure event-related settings such as audio, video, screenshare, and chat permissions.
 *
 * @example
 * ```tsx
 * import React, { useState } from 'react';
 * import { EventSettingsModal } from 'mediasfu-reactnative-expo';
 * import { io } from 'socket.io-client';
 *
 * const socket = io('https://your-server-url.com');
 *
 * function App() {
 *   const [isModalVisible, setModalVisible] = useState(false);
 *
 *   return (
 *     <View>
 *       <Button title="Open Event Settings" onPress={() => setModalVisible(true)} />
 *       <EventSettingsModal
 *         isEventSettingsModalVisible={isModalVisible}
 *         onEventSettingsClose={() => setModalVisible(false)}
 *         audioSetting="allow"
 *         videoSetting="approval"
 *         screenshareSetting="disallow"
 *         chatSetting="allow"
 *         updateAudioSetting={(setting) => console.log('Audio setting updated:', setting)}
 *         updateVideoSetting={(setting) => console.log('Video setting updated:', setting)}
 *         updateScreenshareSetting={(setting) => console.log('Screenshare setting updated:', setting)}
 *         updateChatSetting={(setting) => console.log('Chat setting updated:', setting)}
 *         roomName="meeting-room"
 *         socket={socket}
 *         showAlert={(alert) => console.log('Alert:', alert)}
 *       />
 *     </View>
 *   );
 * }
 *
 * export default App;
 * ```
 */
declare const EventSettingsModal: React.FC<EventSettingsModalOptions>;
export default EventSettingsModal;
