/**
 * Copyright (c) 2020-2021 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';
import { PluginContext } from './context';
import { EmdbDownloadProvider } from '../mol-plugin-state/actions/volume';
import { StructureRepresentationPresetProvider } from '../mol-plugin-state/builder/structure/representation-preset';
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>;
        PickPadding: PluginConfigItem<number>;
        EnableWboit: PluginConfigItem<boolean>;
        PreferWebGl1: PluginConfigItem<boolean>;
    };
    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: {
        ShowExpand: PluginConfigItem<boolean>;
        ShowControls: PluginConfigItem<boolean>;
        ShowSettings: PluginConfigItem<boolean>;
        ShowSelectionMode: PluginConfigItem<boolean>;
        ShowAnimation: PluginConfigItem<boolean>;
    };
    Download: {
        DefaultPdbProvider: PluginConfigItem<"rcsb" | "pdbe">;
        DefaultEmdbProvider: PluginConfigItem<EmdbDownloadProvider>;
    };
    Structure: {
        SizeThresholds: PluginConfigItem<{
            smallResidueCount: number;
            mediumResidueCount: number;
            largeResidueCount: number;
            highSymmetryUnitCount: number;
            fiberResidueCount: number;
        }>;
        DefaultRepresentationPresetParams: PluginConfigItem<StructureRepresentationPresetProvider.CommonParams>;
    };
};
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 {};
