export interface PrepopulateParticipantLike {
    name?: string;
    islevel?: string;
    ScreenID?: string;
    ScreenOn?: boolean;
    [key: string]: any;
}
export interface PrepopulateStreamLike {
    producerId?: string;
    stream?: any;
    [key: string]: any;
}
export interface BuildPrepopulateUserMediaPlanOptions<P extends PrepopulateParticipantLike, S extends PrepopulateStreamLike> {
    participants: P[];
    allVideoStreams: S[];
    member: string;
    islevel: string;
    shared: boolean;
    shareScreenStarted: boolean;
    eventType: string;
    screenId?: string;
    whiteboardStarted: boolean;
    whiteboardEnded: boolean;
    remoteScreenStream: S[];
    localStreamScreen: any;
    checkOrientation: () => string;
    isWideScreen: boolean;
    forceFullDisplay: boolean;
    includeWhiteboardAsScreenFlow?: boolean;
}
export interface PrepopulateUserMediaPlan<P extends PrepopulateParticipantLike> {
    screenFlowActive: boolean;
    shouldReturnEarly: boolean;
    shouldUpdateAdminOnMainScreen: boolean;
    screenForceFullDisplay: boolean;
    host: P | null;
    hostStream: any;
    adminOnMainScreen: boolean;
    mainScreenPerson: string;
}
export interface ResolveMainHostRenderModeOptions {
    islevel: string;
    localUIMode: boolean;
    videoAlreadyOn: boolean;
    audioAlreadyOn: boolean;
    hostVideoOn: boolean;
    hostMuted?: boolean;
}
export type MainHostRenderMode = 'adminVideo' | 'audio' | 'mini' | 'video';
export interface ResolveHostVideoStreamOptions<TStreamLike = PrepopulateStreamLike> {
    islevel: string;
    keepBackground: boolean;
    virtualStream: any;
    localStreamVideo: any;
    oldAllStreams: TStreamLike[];
    hostVideoID?: string;
}
export interface BuildMainScreenStateOptions {
    filled: boolean;
    adminOnMainScreen: boolean;
    mainScreenPerson: string;
}
export interface MainScreenState {
    filled: boolean;
    adminOnMainScreen: boolean;
    mainScreenPerson: string;
}
export interface BuildMainHostCardPlanOptions<TStreamLike = PrepopulateStreamLike> {
    islevel: string;
    localUIMode: boolean;
    videoAlreadyOn: boolean;
    audioAlreadyOn: boolean;
    hostVideoOn: boolean;
    hostMuted?: boolean;
    hostIsAdmin: boolean;
    hostName: string;
    hostVideoID?: string;
    fallbackName: string;
    member: string;
    keepBackground: boolean;
    virtualStream: any;
    localStreamVideo: any;
    oldAllStreams: TStreamLike[];
}
export interface MainHostCardPlan {
    kind: 'video' | 'audio' | 'mini';
    key: string;
    name: string;
    initials?: string;
    remoteProducerId?: string;
    videoStream?: any;
    doMirror?: boolean;
    state: MainScreenState;
}
export interface BuildScreenShareHostCardPlanOptions {
    hostName: string;
    hostScreenID?: string;
    hostIsAdmin: boolean;
    shared: boolean;
    hostStream: any;
    screenForceFullDisplay: boolean;
    annotateScreenStream: boolean;
}
export interface ScreenShareHostCardPlan {
    key: string;
    name: string;
    remoteProducerId: string;
    videoStream: any;
    forceFullDisplay: boolean;
    doMirror: false;
    state: MainScreenState;
}
/**
 * ReactJS-local mirror helper for resolving host render mode in non-screen-share flow.
 */
export declare function resolveMainHostRenderMode({ islevel, localUIMode, videoAlreadyOn, audioAlreadyOn, hostVideoOn, hostMuted, }: ResolveMainHostRenderModeOptions): MainHostRenderMode;
/**
 * ReactJS-local mirror for resolving host video stream source in non-screen-share flow.
 */
export declare function resolveHostVideoStream<TStreamLike extends PrepopulateStreamLike = PrepopulateStreamLike>({ islevel, keepBackground, virtualStream, localStreamVideo, oldAllStreams, hostVideoID, }: ResolveHostVideoStreamOptions<TStreamLike>): any;
/**
 * ReactJS-local mirror for normalizing main-screen state updates.
 */
export declare function buildMainScreenState({ filled, adminOnMainScreen, mainScreenPerson, }: BuildMainScreenStateOptions): MainScreenState;
/**
 * ReactJS-local mirror for resolving the non-screen-share host card plan.
 */
export declare function buildMainHostCardPlan<TStreamLike extends PrepopulateStreamLike = PrepopulateStreamLike>({ islevel, localUIMode, videoAlreadyOn, audioAlreadyOn, hostVideoOn, hostMuted, hostIsAdmin, hostName, hostVideoID, fallbackName, member, keepBackground, virtualStream, localStreamVideo, oldAllStreams, }: BuildMainHostCardPlanOptions<TStreamLike>): MainHostCardPlan;
/**
 * ReactJS-local mirror for resolving the screen-share host card plan.
 */
export declare function buildScreenShareHostCardPlan({ hostName, hostScreenID, hostIsAdmin, shared, hostStream, screenForceFullDisplay, annotateScreenStream, }: BuildScreenShareHostCardPlanOptions): ScreenShareHostCardPlan;
/**
 * ReactJS-local mirror of shared prepopulateUserMedia planning logic.
 * Keep this aligned with mediasfu-shared/src/consumers/gridLayout/prepopulateUserMedia.engine.ts.
 */
export declare function buildPrepopulateUserMediaPlan<P extends PrepopulateParticipantLike, S extends PrepopulateStreamLike>({ participants, allVideoStreams, member, shared, shareScreenStarted, eventType, screenId, whiteboardStarted, whiteboardEnded, remoteScreenStream, localStreamScreen, checkOrientation, isWideScreen, forceFullDisplay, includeWhiteboardAsScreenFlow, }: BuildPrepopulateUserMediaPlanOptions<P, S>): PrepopulateUserMediaPlan<P>;
//# sourceMappingURL=prepopulateUserMedia.engine.d.ts.map