/**
 * @module viw-webgl-component
 */
/**
 * Makes all fields optional recursively
 * https://stackoverflow.com/questions/41980195/recursive-partialt-in-typescript
 */
export type RecursivePartial<T> = {
    [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object ? RecursivePartial<T[P]> : T[P];
};
/**
 * true, false or restricted
 * Restricted: is false and cannot be changed by the user.
 */
export type UserBoolean = boolean | 'AlwaysTrue' | 'AlwaysFalse';
export declare function isTrue(value: UserBoolean | boolean): boolean;
export declare function isFalse(value: UserBoolean | boolean): boolean;
/**
 * Vim component settings, can either be set at component intialization or by user using UI.
 */
export type ComponentSettings = {
    peformance: {
        useFastMaterial: boolean;
    };
    isolation: {
        enable: boolean;
        useIsolationMaterial: 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;
    };
};
export type PartialComponentSettings = RecursivePartial<ComponentSettings>;
export declare function anyUiAxesButton(settings: ComponentSettings): UserBoolean;
export declare function anyUiCursorButton(settings: ComponentSettings): boolean;
export declare function anyUiToolButton(settings: ComponentSettings): boolean;
export declare function anyUiSettingButton(settings: ComponentSettings): boolean;
export declare const defaultSettings: ComponentSettings;
