import { Object3D } from "three";
import { AssetReference } from "../engine/engine_addressables.js";
import { Behaviour } from "./Component.js";
declare type UserCamInfo = {
    obj: Object3D;
    lastUpdate: number;
    userId: string;
};
/**
 * SyncedCamera is a component that syncs the camera position and rotation of all users in the room.
 * A prefab can be set to represent the remote cameras visually in the scene.
 *
 * @summary Syncs camera position and rotation of users in a networked room
 * @category Networking
 * @group Components
 */
export declare class SyncedCamera extends Behaviour {
    static instances: UserCamInfo[];
    getCameraObject(userId: string): Object3D | null;
    /**
     * The prefab to visually represent the remote cameras in the scene.
     */
    cameraPrefab: Object3D | null | AssetReference;
    private _lastWorldPosition;
    private _lastWorldQuaternion;
    private _model;
    private _needsUpdate;
    private _lastUpdateTime;
    private remoteCams;
    private userToCamMap;
    private _camTimeoutInSeconds;
    private _receiveCallback;
    /** @internal */
    awake(): Promise<void>;
    /** @internal */
    onEnable(): void;
    /** @internal */
    onDisable(): void;
    /** @internal */
    update(): void;
    private onReceivedRemoteCameraInfoBin;
}
export {};
