import { default as React } from 'react';
import { SessionStatus, UserRole } from '../providers/VideoPluginProvider/context';

export type Credentials = {
    sessionName: string;
    signature: string;
    userName: string;
    sessionPasscode: string;
};
export type PaidAddOns = {
    allowLiveTranscription?: boolean;
    allowRecording?: boolean;
};
export type VideoPluginProps = {
    onChangeUserRole?: (user: {
        censusUserId: string;
        role: UserRole;
    }) => Promise<void>;
    onInitPreSession?: () => Promise<void>;
    onInitSession?: () => Promise<void>;
    onCloseSession?: () => Promise<void>;
    onRestartSession?: () => Promise<void>;
    /** Called after the current user has successfully joined the session. */
    onJoin?: () => void;
    /** Called after the current user has successfully left the session. */
    onExit?: () => void;
    videoSessionStatus?: SessionStatus;
    credentials: Credentials;
    language?: string;
    className?: string;
    /** Renders a floating panel to simulate active-media-failed errors. For development only. */
    devTools?: boolean;
    /** Set to false to suppress all non-error logs (e.g. in production). Defaults to true. */
    enableLogs?: boolean;
    /** Controls whether "Finish for all" is available. Defaults to true. */
    isFinishForAllEnabled?: boolean;
    /** Feature flags for paid Zoom add-ons. All flags default to true when not provided. */
    paidAddOns?: PaidAddOns;
};
export type ReactSetter<T> = React.Dispatch<React.SetStateAction<T>>;
