import { ReactNode } from 'react';
import { Credentials, PaidAddOns } from '../../types';
import { SessionStatus, UserRole } from './context';

/**
 * Internal provider API exposed upward to VideoPlugin
 */
export type VideoPluginProviderHandle = {
    isReady: () => boolean;
    cleanup: () => Promise<void>;
    getSessionStarted: () => boolean;
    joinSession: () => Promise<void>;
    leaveSession: (options: {
        finishForAll?: boolean;
    }) => Promise<void>;
};
export type VideoPluginProviderProps = {
    credentials: Credentials;
    children: ReactNode;
    onChangeUserRole?: (user: {
        censusUserId: string;
        role: UserRole;
    }) => Promise<void>;
    videoSessionStatus?: SessionStatus;
    language?: string;
    isFinishForAllEnabled?: boolean;
    paidAddOns?: PaidAddOns;
    onInitVotingPreSession?: () => Promise<void>;
    onInitVotingSession?: () => Promise<void>;
    onCloseVotingSession?: () => Promise<void>;
    onRestartVotingSession?: () => Promise<void>;
    onJoin?: () => void;
    onExit?: () => void;
};
declare const VideoPluginProvider: import('react').ForwardRefExoticComponent<VideoPluginProviderProps & import('react').RefAttributes<VideoPluginProviderHandle>>;
export default VideoPluginProvider;
