/**
 * @module viw-webgl-react
 * Contains settings and type definitions for the Vim web viewer
 */
import { UserBoolean } from "./userBoolean";
/**
 * Makes all fields optional recursively
 * @template T - The type to make recursively partial
 * @returns A type with all nested properties made optional
 */
export type RecursivePartial<T> = {
    [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object ? RecursivePartial<T[P]> : T[P];
};
/**
 * Complete settings configuration for the Vim viewer
 * @interface Settings
 */
export type Settings = {
    materials: {
        useFastMaterial: boolean;
        useGhostMaterial: boolean;
        smallGhostThreshold: number;
    };
    isolation: {
        enable: boolean;
    };
    capacity: {
        canFollowUrl: boolean;
        canGoFullScreen: boolean;
        useOrthographicCamera: boolean;
        canDownload: boolean;
    };
    ui: {
        logo: UserBoolean;
        bimTreePanel: UserBoolean;
        bimInfoPanel: UserBoolean;
        performance: UserBoolean;
        axesPanel: UserBoolean;
        orthographic: UserBoolean;
        resetCamera: UserBoolean;
        enableGhost: UserBoolean;
        controlBar: UserBoolean;
        orbit: UserBoolean;
        lookAround: UserBoolean;
        pan: UserBoolean;
        zoom: UserBoolean;
        zoomWindow: UserBoolean;
        autoCamera: UserBoolean;
        frameSelection: UserBoolean;
        frameScene: UserBoolean;
        sectioningMode: UserBoolean;
        measuringMode: UserBoolean;
        toggleIsolation: UserBoolean;
        projectInspector: UserBoolean;
        settings: UserBoolean;
        help: UserBoolean;
        maximise: UserBoolean;
    };
};
/**
 * Partial version of ComponentSettings where all properties are optional
 */
export type PartialSettings = RecursivePartial<Settings>;
/**
 * Default settings configuration for the Vim Viewer
 * @constant
 * @type {Settings}
 */
export declare function getDefaultSettings(): Settings;
export declare function createSettings(settings: PartialSettings): Settings;
