import { CloseAndResizeParameters, CloseAndResizeType, PrepopulateUserMediaParameters, PrepopulateUserMediaType, ReorderStreamsParameters, ReorderStreamsType, Transport } from '../../@types/types'; export interface ProducerMediaClosedParameters extends CloseAndResizeParameters, PrepopulateUserMediaParameters, ReorderStreamsParameters { consumerTransports: Transport[]; updateConsumerTransports: (transports: Transport[]) => void; hostLabel: string; shared: boolean; updateShared: (shared: boolean) => void; updateShareScreenStarted: (started: boolean) => void; updateScreenId: (screenId: string) => void; updateShareEnded: (ended: boolean) => void; closeAndResize: CloseAndResizeType; prepopulateUserMedia: PrepopulateUserMediaType; reorderStreams: ReorderStreamsType; getUpdatedAllParams: () => ProducerMediaClosedParameters; [key: string]: any; } export interface ProducerMediaClosedOptions { producerId: string; kind: 'video' | 'screen' | 'audio' | 'screenshare'; parameters: ProducerMediaClosedParameters; } export type ProducerMediaClosedType = (options: ProducerMediaClosedOptions) => Promise; /** * Handles the closure of a media producer. * * @param {ProducerMediaClosedOptions} options - The options for closing the media producer. * @param {string} options.producerId - The ID of the producer to close. * @param {string} options.kind - The kind of media (e.g., "screenshare" or "screen"). * @param {ProducerMediaClosedParameters} options.parameters - The parameters object containing various methods and properties. * * @returns {Promise} - A promise that resolves when the producer has been closed and necessary updates are made. * * @remarks * This function performs the following steps: * 1. Retrieves updated parameters. * 2. Finds the transport associated with the producer to close. * 3. Closes the consumer transport and consumer if found. * 4. Updates the consumer transports list. * 5. Calls `closeAndResize` with the necessary parameters. * 6. If the producer kind is "screenshare" or "screen", updates shared state and calls various update methods. * * @example * ```typescript * const options: ProducerMediaClosedOptions = { * producerId: "12345", * kind: "screenshare", * parameters: { * consumerTransports: [{ producerId: "12345", consumerTransport: someTransport, consumer: someConsumer }], * updateConsumerTransports: (transports) => console.log("Updated transports:", transports), * hostLabel: "Host1", * shared: true, * updateShared: (shared) => console.log("Updated shared state:", shared), * updateShareScreenStarted: (started) => console.log("Screen sharing started:", started), * updateScreenId: (screenId) => console.log("Screen ID updated:", screenId), * updateShareEnded: (ended) => console.log("Share ended:", ended), * closeAndResize: async (params) => console.log("Closed and resized:", params), * prepopulateUserMedia: async (params) => console.log("Prepopulated user media:", params), * reorderStreams: async (params) => console.log("Reordered streams:", params), * getUpdatedAllParams: () => (), * }, * }; * * await producerMediaClosed(options); * ``` */ export declare const producerMediaClosed: ({ producerId, kind, parameters, }: ProducerMediaClosedOptions) => Promise;