/**
 * Copyright (c) 2020-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author David Sehnal <david.sehnal@gmail.com>
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { Structure } from '../mol-model/structure.js';
import { PluginContext } from './context.js';
import { EmdbDownloadProvider } from '../mol-plugin-state/actions/volume.js';
import { StructureRepresentationPresetProvider } from '../mol-plugin-state/builder/structure/representation-preset.js';
import { SaccharideCompIdMapType } from '../mol-model/structure/structure/carbohydrates/constants.js';
export declare class PluginConfigItem<T = any> {
    key: string;
    defaultValue?: T | undefined;
    toString(): string;
    valueOf(): string;
    constructor(key: string, defaultValue?: T | undefined);
}
declare function item<T>(key: string, defaultValue?: T): PluginConfigItem<T>;
export declare const PluginConfig: {
    item: typeof item;
    General: {
        IsBusyTimeoutMs: PluginConfigItem<number>;
        DisableAntialiasing: PluginConfigItem<boolean>;
        DisablePreserveDrawingBuffer: PluginConfigItem<boolean>;
        PixelScale: PluginConfigItem<number>;
        PickScale: PluginConfigItem<number>;
        Transparency: PluginConfigItem<"blended" | "wboit" | "dpoit">;
        PreferWebGl1: PluginConfigItem<boolean>;
        AllowMajorPerformanceCaveat: PluginConfigItem<boolean>;
        PowerPreference: PluginConfigItem<WebGLPowerPreference | undefined>;
        ResolutionMode: PluginConfigItem<"auto" | "scaled" | "native">;
    };
    State: {
        DefaultServer: PluginConfigItem<string>;
        CurrentServer: PluginConfigItem<string>;
        HistoryCapacity: PluginConfigItem<number>;
    };
    VolumeStreaming: {
        Enabled: PluginConfigItem<boolean>;
        DefaultServer: PluginConfigItem<string>;
        CanStream: PluginConfigItem<(s: Structure, plugin: PluginContext) => boolean>;
        EmdbHeaderServer: PluginConfigItem<string>;
    };
    Viewport: {
        ShowReset: PluginConfigItem<boolean>;
        ShowExpand: PluginConfigItem<boolean>;
        ShowToggleFullscreen: PluginConfigItem<boolean>;
        ShowControls: PluginConfigItem<boolean>;
        ShowSettings: PluginConfigItem<boolean>;
        ShowSelectionMode: PluginConfigItem<boolean>;
        ShowAnimation: PluginConfigItem<boolean>;
        ShowTrajectoryControls: PluginConfigItem<boolean>;
        ShowScreenshotControls: PluginConfigItem<boolean>;
        ShowIllumination: PluginConfigItem<boolean>;
        ShowXR: PluginConfigItem<"auto" | "always" | "never">;
    };
    Download: {
        DefaultPdbProvider: PluginConfigItem<"rcsb" | "pdbe" | "pdbj">;
        DefaultEmdbProvider: PluginConfigItem<EmdbDownloadProvider>;
    };
    Structure: {
        SizeThresholds: PluginConfigItem<{
            smallResidueCount: number;
            mediumResidueCount: number;
            largeResidueCount: number;
            highSymmetryUnitCount: number;
            fiberResidueCount: number;
        }>;
        DefaultRepresentationPreset: PluginConfigItem<string>;
        DefaultRepresentationPresetParams: PluginConfigItem<StructureRepresentationPresetProvider.CommonParams>;
        SaccharideCompIdMapType: PluginConfigItem<SaccharideCompIdMapType>;
    };
    Background: {
        Styles: PluginConfigItem<[import("../mol-util/param-definition.js").ParamDefinition.Values<{
            variant: import("../mol-util/param-definition.js").ParamDefinition.Mapped<import("../mol-util/param-definition.js").ParamDefinition.NamedParams<import("../mol-util/param-definition.js").ParamDefinition.Normalize<unknown>, "off"> | import("../mol-util/param-definition.js").ParamDefinition.NamedParams<import("../mol-util/param-definition.js").ParamDefinition.Normalize<{
                coverage: "canvas" | "viewport";
                opacity: number;
                saturation: number;
                lightness: number;
                source: import("../mol-util/param-definition.js").ParamDefinition.NamedParams<any, "url"> | import("../mol-util/param-definition.js").ParamDefinition.NamedParams<import("../mol-util/assets.js").Asset.File | null, "file">;
                blur: number;
            }>, "image"> | import("../mol-util/param-definition.js").ParamDefinition.NamedParams<import("../mol-util/param-definition.js").ParamDefinition.Normalize<{
                centerColor: import("../mol-util/color/index.js").Color;
                edgeColor: import("../mol-util/color/index.js").Color;
                ratio: number;
                coverage: "canvas" | "viewport";
            }>, "radialGradient"> | import("../mol-util/param-definition.js").ParamDefinition.NamedParams<import("../mol-util/param-definition.js").ParamDefinition.Normalize<{
                opacity: number;
                saturation: number;
                lightness: number;
                faces: import("../mol-util/param-definition.js").ParamDefinition.NamedParams<import("../mol-util/param-definition.js").ParamDefinition.Normalize<{
                    nx: /*elided*/ any;
                    ny: /*elided*/ any;
                    nz: /*elided*/ any;
                    px: /*elided*/ any;
                    py: /*elided*/ any;
                    pz: /*elided*/ any;
                }>, "urls"> | import("../mol-util/param-definition.js").ParamDefinition.NamedParams<import("../mol-util/param-definition.js").ParamDefinition.Normalize<{
                    nx: /*elided*/ any;
                    ny: /*elided*/ any;
                    nz: /*elided*/ any;
                    px: /*elided*/ any;
                    py: /*elided*/ any;
                    pz: /*elided*/ any;
                }>, "files">;
                blur: number;
                rotation: import("../mol-util/param-definition.js").ParamDefinition.Normalize<{
                    x: /*elided*/ any;
                    y: /*elided*/ any;
                    z: /*elided*/ any;
                }>;
            }>, "skybox"> | import("../mol-util/param-definition.js").ParamDefinition.NamedParams<import("../mol-util/param-definition.js").ParamDefinition.Normalize<{
                topColor: import("../mol-util/color/index.js").Color;
                bottomColor: import("../mol-util/color/index.js").Color;
                ratio: number;
                coverage: "canvas" | "viewport";
            }>, "horizontalGradient">>;
        }>, string][]>;
    };
};
export declare class PluginConfigManager {
    private _config;
    get<T>(key: PluginConfigItem<T>): T | undefined;
    set<T>(key: PluginConfigItem<T>, value: T): void;
    delete<T>(key: PluginConfigItem<T>): void;
    constructor(initial?: [PluginConfigItem, unknown][]);
}
export {};
