import { Participant, Stream, AudioCardParameters, EventType, MediaStream } from '../@types/types';
export interface PrepopulateUserMediaParameters extends AudioCardParameters {
    participants: Participant[];
    allVideoStreams: (Stream | Participant)[];
    islevel: string;
    member: string;
    shared: boolean;
    shareScreenStarted: boolean;
    eventType: EventType;
    screenId?: string;
    forceFullDisplay: boolean;
    updateMainWindow: boolean;
    mainScreenFilled: boolean;
    adminOnMainScreen: boolean;
    mainScreenPerson: string;
    videoAlreadyOn: boolean;
    audioAlreadyOn: boolean;
    oldAllStreams: (Stream | Participant)[];
    checkOrientation: () => string;
    screenForceFullDisplay: boolean;
    localStreamScreen: MediaStream | null;
    remoteScreenStream: Stream[];
    localStreamVideo: MediaStream | null;
    mainHeightWidth: number;
    isWideScreen: boolean;
    localUIMode: boolean;
    whiteboardStarted: boolean;
    whiteboardEnded: boolean;
    virtualStream: MediaStream | null;
    keepBackground: boolean;
    annotateScreenStream: boolean;
    updateMainScreenPerson: (person: string) => void;
    updateMainScreenFilled: (filled: boolean) => void;
    updateAdminOnMainScreen: (admin: boolean) => void;
    updateMainHeightWidth: (heightWidth: number) => void;
    updateScreenForceFullDisplay: (force: boolean) => void;
    updateUpdateMainWindow: (update: boolean) => void;
    updateMainGridStream: (components: JSX.Element[]) => void;
    getUpdatedAllParams: () => PrepopulateUserMediaParameters;
    [key: string]: any;
}
export interface PrepopulateUserMediaOptions {
    name: string;
    parameters: PrepopulateUserMediaParameters;
}
export type PrepopulateUserMediaType = (options: PrepopulateUserMediaOptions) => Promise<JSX.Element[] | void>;
/**
 * Processes consumer transports by pausing and resuming them based on certain conditions.
 *
 * @param {Object} options - The options for processing consumer transports.
 * @param {Array} options.consumerTransports - The list of consumer transports to process.
 * @param {Array} options.lStreams_ - The list of local streams.
 * @param {Object} options.parameters - The parameters object containing various stream arrays and utility functions.
 *
 * @returns {Promise<void>} - A promise that resolves when the processing is complete.
 *
 * @throws {Error} - Throws an error if there is an issue processing consumer transports.
 *
 * The function performs the following steps:
 * 1. Destructures and updates the parameters.
 * 2. Defines a helper function to check if a producerId is valid in given stream arrays.
 * 3. Filters consumer transports to resume based on certain conditions.
 * 4. Filters consumer transports to pause based on certain conditions.
 * 5. Pauses consumer transports after a short delay.
 * 6. Emits `consumer-pause` event for each filtered transport (not audio).
 * 7. Emits `consumer-resume` event for each filtered transport (not audio).
 *
 * @example
 * ```typescript
 * await processConsumerTransports({
 *   consumerTransports: [transport1, transport2],
 *   lStreams_: [stream1, stream2],
 *   parameters: {
 *     remoteScreenStream: [],
 *     oldAllStreams: [],
 *     newLimitedStreams: [],
 *     sleep: sleepFunction,
 *     getUpdatedAllParams: () => parameters,
 *   },
 * });
 * ```
 */
export declare function prepopulateUserMedia({ name, parameters, }: PrepopulateUserMediaOptions): Promise<JSX.Element[] | void>;
