import { PlayerView } from "../engine/engine_playerview.js";
import { Camera } from "./Camera.js";
import { Behaviour } from "./Component.js";
export declare enum SpectatorMode {
    FirstPerson = 0,
    ThirdPerson = 1
}
/**
 * @category Networking
 * @group Components
 */
export declare class SpectatorCamera extends Behaviour {
    cam: Camera | null;
    /** when enabled pressing F will send a request to all connected users to follow me, ESC to stop */
    useKeys: boolean;
    private _mode;
    get mode(): SpectatorMode;
    set mode(val: SpectatorMode);
    /** if this user is currently spectating someone else */
    get isSpectating(): boolean;
    isSpectatingUser(userId: string): boolean;
    isFollowedBy(userId: string): boolean;
    /** list of other users that are following me */
    get followers(): string[];
    stopSpectating(): void;
    private get localId();
    /** player view to follow */
    set target(target: PlayerView | undefined);
    get target(): PlayerView | undefined;
    requestAllFollowMe(): void;
    private get isSpectatingSelf();
    private orbit;
    private _handler?;
    private eventSub_WebXRRequestStartEvent;
    private eventSub_WebXRStartEvent;
    private eventSub_WebXREndEvent;
    private _debug?;
    private _networking;
    awake(): void;
    onDestroy(): void;
    private isSupportedPlatform;
    onBeforeXR(_evt: any): void;
    onEnterXR(_evt: any): void;
    onLeaveXR(_evt: any): void;
    private followSelf;
    onAfterRender(): void;
    private setAvatarFlagsBeforeRender;
    private resetAvatarFlags;
}
