import { EventDispatcher } from "three";
import { ControlMode } from "../core/ControlMode.js";
import { SettingsEventMap } from "./SettingsEventMap.js";
/**
 * General settings.
 *
 * @group Settings
 */
export declare class GeneralSettings extends EventDispatcher<SettingsEventMap> {
    /**
     * Triggers when the settings are changed.
     *
     * @event
     */
    static readonly EVENT_CHANGE = "change";
    /**
     * @see {@link mode}
     */
    private _mode;
    /**
     * @see {@link previousMode}
     */
    private _previousMode;
    /**
     * Constructs new general settings.
     */
    constructor();
    /**
     * The control mode.
     */
    get mode(): ControlMode;
    set mode(value: ControlMode);
    /**
     * Copies the given general settings.
     *
     * @param settings - General settings.
     * @return This instance.
     */
    copy(settings: GeneralSettings): GeneralSettings;
    /**
     * Clones this general settings instance.
     *
     * @return The cloned general settings.
     */
    clone(): GeneralSettings;
    /**
     * Copies the given JSON data.
     *
     * @param json - The JSON data.
     * @return This instance.
     */
    fromJSON(json: GeneralSettings): GeneralSettings;
    toJSON(): Record<string, unknown>;
}
