import { FcrDesktopMediaControl, FcrMobileMediaControl, FcrMonitorControl } from '..';
import { FcrMainRoomControl, FcrWaitingRoomControl, FcrRoomJoinOptions, FcrInfinityRoomControl } from '../room-control/type';
import { FcrRoomRouter, FcrPeerSessionControl, FcrCoreEngineObserver, FcrRemoteControl } from '../type';
import { Unknown } from '../imports';
export interface FcrCoreEngine {
    release(): void;
    /**
     * Logins to the RTE service.
     */
    login(): Promise<void>;
    /**
     * Logouts from the RTE service.
     */
    logout(): void;
    /**
     * Renews the user token.
     * @param token
     */
    renewUserToken(token: string): Promise<number>;
    /**
     * Gets the version of the SDK.
     * @returns The version of the SDK.
     */
    getVersion(): string;
    /**
     * Gets the dependency versions.
     * @returns The dependency versions.
     */
    getDependencyVersions(): Record<string, string>;
    /**
     * Creates a room control.
     * @param roomId
     * @returns The room control.
     */
    createMainRoomControl(roomId: string): FcrMainRoomControl;
    /**
     * Creates a waiting room control.
     * @param roomId
     * @returns The room control.
     */
    createWaitingRoomControl(roomId: string): FcrWaitingRoomControl;
    /**
     * Creates an infinity room control.
     * @param roomId
     */
    createInfinityRoomControl(roomId: string): FcrInfinityRoomControl;
    /**
     * Creates room router.
     * @param roomId
     * @returns The room router.
     */
    createRoomRouter(roomId: string): FcrRoomRouter;
    /**
     * Creates a main room control or a waiting room control.
     * @param roomId
     * @returns The room control.
     */
    createRoomControlAndJoin(roomId: string, options: FcrRoomJoinOptions): Promise<FcrMainRoomControl | FcrWaitingRoomControl | FcrInfinityRoomControl>;
    /**
     * Gets the media control.
     * @returns The media control.
     */
    getDesktopMediaControl(): FcrDesktopMediaControl;
    /**
     * Gets the mobile media control.
     * @returns The mobile media control.
     */
    getMobileMediaControl(): FcrMobileMediaControl;
    /**
     * Gets the monitor control.
     * @returns The monitor control.
     */
    getMonitorControl(): FcrMonitorControl;
    /**
     * Gets the peer session control.
     * @returns The peer session control.
     */
    getPeerSessionControl(): FcrPeerSessionControl;
    /**
     * Gets the remote control.
     * @returns The remote control.
     */
    getRemoteControl(): FcrRemoteControl;
    /**
     * Sends a peer message.
     * @param payload
     * @param guaranteedDelivery
     * @param receiverId
     */
    sendPeerMessage(payload: Record<string, Unknown>, guaranteedDelivery: boolean, receiverId: string): Promise<number>;
    /**
     * Sets the parameters.
     * @param parameters
     */
    setParameters(parameters: Record<string, Unknown>): number;
    /**
     * Adds an observer.
     * @param observer
     */
    addObserver(observer: FcrCoreEngineObserver): void;
    /**
     * Removes an observer.
     * @param observer
     */
    removeObserver(observer: FcrCoreEngineObserver): void;
}
