import { FcrRemoteControl, FcrRemoteControlConnectionState, FcrRemoteControlSessionParams, FcrRemoteControlState, FcrRemoteObserver } from './type';
import { AgoraRteEngine } from '../imports';
import { FcrPeerSession } from '../peer-session/type';
import { FcrCoreServiceApi } from '../service/api';
export declare const KEEPALIVE_TIMEOUT_MULTIPLIER = 2;
export type FcrRemoteControlUpdateSessionData = Omit<FcrPeerSession, 'keepAlive'> & {
    action: 0 | 1 | 2 | 3;
    keepAlive: 0 | 1;
};
export declare class FcrRemoteControlImpl implements FcrRemoteControl {
    private _rteEngine;
    private _api;
    private readonly _userId;
    protected logger: import("agora-foundation/lib/logger/type").Logger;
    private _remoteControlSessionKey;
    private _observable;
    constructor(_rteEngine: AgoraRteEngine, _api: FcrCoreServiceApi, _userId: string);
    private _handleUpdateRemoteControlSession;
    private _handleDeleteRemoteControlSession;
    startRemoteControlRequest(params: FcrRemoteControlSessionParams): Promise<string | null>;
    acceptRemoteControlRequest(_sessionId: string, cause?: Record<string, unknown>): Promise<void>;
    rejectRemoteControlRequest(_sessionId: string, cause?: Record<string, unknown>): Promise<void>;
    terminateRemoteControl(_sessionId: string, cause?: Record<string, unknown>): Promise<void>;
    updateRemoteControlConnectionState(_sessionId: string, _state: FcrRemoteControlConnectionState, cause?: Record<string, unknown>): Promise<void>;
    getRemoteControlState(): FcrRemoteControlState | null;
    addObserver(observer: FcrRemoteObserver): void;
    removeObserver(observer: FcrRemoteObserver): void;
    release(): Promise<void>;
    private _notifyRemoteControlState;
    private _addLogObserver;
}
