import { FcrBaseWhiteboardControl, FcrBaseWhiteboardObserver, FcrBoardMainWindow, FcrObjectForgeInitConfig } from '../type';
import { AgoraRteConnectionState } from 'agora-rte-sdk';
import type { RTMClient } from 'agora-rtm';
import { AgoraObservable, AgoraScheduler } from '../../../imports';
import { FcrBoardConfig } from '../whiteboard-control/type';
import { Room } from '@netless/forge-room';
import { Whiteboard, WhiteboardOption } from '@netless/forge-whiteboard';
import { FcrConnectionState } from '../../../type';
export declare class FcrBaseWhiteboardControlImpl<T extends FcrBaseWhiteboardObserver> implements FcrBaseWhiteboardControl<T> {
    protected rtmClient: RTMClient;
    protected config: FcrBoardConfig;
    protected logger: import("agora-foundation/lib/logger/type").Logger;
    protected forgeInitConfigTask: AgoraScheduler.Task;
    protected observable: AgoraObservable<T>;
    protected boardView: FcrBoardMainWindow | null;
    protected boardRoom: Room | null;
    protected whiteboard: Whiteboard | null;
    protected connectState: FcrConnectionState;
    protected forgeInitConfig: FcrObjectForgeInitConfig | null;
    protected hasOperationPrivilege: boolean;
    private _waitPromise;
    private _waitPromiseResolve;
    private _waitPromiseReject;
    private _openAbortController;
    private _isOpen;
    constructor(rtmClient: RTMClient, config: FcrBoardConfig, hasOperationPrivilege: boolean, forgeInitConfigFetcher: () => Promise<FcrObjectForgeInitConfig>);
    setOperationPrivilege(hasOperationPrivilege: boolean): void;
    open(): Promise<FcrBoardMainWindow>;
    close(): Promise<void>;
    getConnectionState(): AgoraRteConnectionState;
    getMainWindow(): FcrBoardMainWindow | null;
    addObserver(observer: T): void;
    removeObserver(observer: T): void;
    protected updateConnectionState(state: FcrConnectionState): void;
    protected connect(): Promise<FcrBoardMainWindow>;
    protected getApplicationId(): string;
    protected getWhiteboardOption(): WhiteboardOption;
    protected getBackgroundColor(): string;
    protected addLogObserver(): void;
    private _checkForConnect;
    private _clearWaitPromise;
}
