/**
 * @module viw-webgl-react
 * Contains settings and type definitions for the Vim web component
 */
/**
 * 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];
};
/**
 * Represents a boolean value that can also be locked to always true or false
 * @typedef {boolean | 'AlwaysTrue' | 'AlwaysFalse'} UserBoolean
 */
export type UserBoolean = boolean | 'AlwaysTrue' | 'AlwaysFalse';
/**
 * Checks if a UserBoolean value is effectively true
 * @param {UserBoolean | boolean} value - The value to check
 * @returns {boolean} True if the value is true or 'AlwaysTrue'
 */
export declare function isTrue(value: UserBoolean | boolean): value is true | "AlwaysTrue";
/**
 * Checks if a UserBoolean value is effectively false
 * @param {UserBoolean | boolean} value - The value to check
 * @returns {boolean} True if the value is false or 'AlwaysFalse'
 */
export declare function isFalse(value: UserBoolean | boolean): value is false | "AlwaysFalse";
/**
 * Complete settings configuration for the Vim component
 * @interface ComponentSettings
 */
export type ComponentSettings = {
    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;
        zoomToFit: 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 PartialComponentSettings = RecursivePartial<ComponentSettings>;
/**
 * Checks if any axes-related UI buttons are enabled
 * @param {ComponentSettings} settings - The component settings to check
 * @returns {boolean} True if any axes buttons are enabled
 */
export declare function anyUiAxesButton(settings: ComponentSettings): UserBoolean;
/**
 * Checks if any cursor-related UI buttons are enabled
 * @param {ComponentSettings} settings - The component settings to check
 * @returns {boolean} True if any cursor buttons are enabled
 */
export declare function anyUiCursorButton(settings: ComponentSettings): boolean;
/**
 * Checks if any tool-related UI buttons are enabled
 * @param {ComponentSettings} settings - The component settings to check
 * @returns {boolean} True if any tool buttons are enabled
 */
export declare function anyUiToolButton(settings: ComponentSettings): boolean;
/**
 * Checks if any settings-related UI buttons are enabled
 * @param {ComponentSettings} settings - The component settings to check
 * @returns {boolean} True if any settings buttons are enabled
 */
export declare function anyUiSettingButton(settings: ComponentSettings): boolean;
/**
 * Default settings configuration for the Vim component
 * @constant
 * @type {ComponentSettings}
 */
export declare const defaultSettings: ComponentSettings;
