import { CreateMediaSFURoomOptions, JoinMediaSFURoomOptions } from '../../@types/types';
export type CreateJoinRoomType = (options: {
    payload: CreateMediaSFURoomOptions | JoinMediaSFURoomOptions;
    apiUserName: string;
    apiKey: string;
    localLink?: string;
}) => Promise<{
    data: CreateJoinRoomResponse | CreateJoinRoomError | null;
    success: boolean;
}>;
export type CreateRoomOnMediaSFUType = (options: {
    payload: CreateMediaSFURoomOptions;
    apiUserName: string;
    apiKey: string;
    localLink?: string;
}) => Promise<{
    data: CreateJoinRoomResponse | CreateJoinRoomError | null;
    success: boolean;
}>;
export interface CreateJoinRoomResponse {
    message: string;
    roomName: string;
    secureCode?: string;
    publicURL: string;
    link: string;
    secret: string;
    success: boolean;
}
export interface CreateJoinRoomError {
    error: string;
    success?: boolean;
}
export type JoinRoomOnMediaSFUType = (options: {
    payload: JoinMediaSFURoomOptions;
    apiUserName: string;
    apiKey: string;
    localLink?: string;
}) => Promise<{
    data: CreateJoinRoomResponse | CreateJoinRoomError | null;
    success: boolean;
}>;
/**
 * Asynchronously joins a room on MediaSFU.
 *
 * This function sends a POST request to the MediaSFU API to join an existing room.
 * It validates the provided credentials and constructs the appropriate API endpoint,
 * including support for the Community Edition via a custom `localLink`.
 *
 * @param {object} options - Configuration options for joining the room.
 * @param {JoinMediaSFURoomOptions | CreateMediaSFURoomOptions} options.payload - The payload containing the room details and action (`join` or `create`).
 * @param {string} options.apiUserName - The API username, used for authentication.
 * @param {string} options.apiKey - The API key, used for authentication.
 * @param {string} [options.localLink=''] - The local link for Community Edition users. If provided, it overrides the default API URL.
 *
 * @returns {Promise<{
*   data: CreateJoinRoomResponse | CreateJoinRoomError | null;
*   success: boolean;
* }>} A promise resolving to an object containing the API response:
* - `data`: The response object, either `CreateJoinRoomResponse` or `CreateJoinRoomError`.
* - `success`: Boolean indicating whether the operation was successful.
*
* @throws {Error} Throws an error if the request fails or if the provided credentials are invalid.
*
* @example
* ```ts
* const response = await joinRoomOnMediaSFU({
*   payload: {
*     action: 'join',
*     meetingID: '123456',
*     userName: 'user123',
*   },
*   apiUserName: 'yourAPIUSERNAME',
*   apiKey: 'yourAPIKEY',
*   localLink: 'http://localhost:3000', // Optional for Community Edition
* });
*
* if (response.success) {
*   console.log('Joined room:', response.data);
* } else {
*   console.error('Failed to join room:', response.data?.error);
* }
* ```
*/
export declare const joinRoomOnMediaSFU: CreateJoinRoomType;
