export declare enum HighlightMode {
    HighlightAll = "highlight-all",
    HighlightPerLayer = "highlight-per-layer"
}
import { Config as SanitizeConfig } from 'dompurify';
declare class GirafeConfig {
    general: {
        locale: string;
        defaultUrlPrefix: string;
        logLevel: 'debug' | 'info' | 'warn' | 'error';
    };
    languages: {
        translations: {
            [key: string]: string[];
        };
        defaultLanguage: string;
    };
    interface: {
        defaultSelectionComponent: string;
        darkFrontendMode: boolean | undefined;
        darkMapMode: boolean;
    };
    themes: {
        url: string;
        defaultTheme: string;
        imagesUrlPrefix: string;
        showErrorsOnStart: boolean;
        selectionMode: 'add' | 'replace';
    };
    basemaps: {
        show: boolean;
        defaultBasemap: string;
        OSM: boolean;
        SwissTopoVectorTiles: boolean;
        emptyBasemap: boolean;
        opacityBasemaps: string[];
    };
    treeview: {
        hideLegendWhenLayerIsDeactivated: boolean;
        defaultIconSize: {
            width: number;
            height: number;
        };
    };
    search?: {
        providers: ({
            type: 'geomapfish';
            url: string;
            resultSrid: string;
            providerName?: string;
        } | {
            type: 'geoadminch';
            bbox?: string;
            locationOrigins?: string;
            providerName?: string;
        })[];
        objectPreview?: boolean;
        layerPreview?: boolean;
        minResolution?: number;
        defaultFillColor?: string;
        defaultStrokeColor?: string;
        defaultStrokeWidth?: number;
        paintSearchResults?: boolean;
    };
    print?: {
        url: string;
        formats?: string[];
        defaultFormat?: string;
        layouts?: string[];
        defaultLayout?: string;
        scales?: number[];
        defaultScale?: number;
        attributeNames?: string[];
        printLegend?: {
            useBbox?: boolean;
            label?: Record<string, boolean | undefined>;
            params?: Record<string, Record<string, unknown>>;
            showGroupsTitle?: boolean;
        };
        customScale?: boolean;
    };
    selection: {
        maxFeature: number;
        defaultFillColor: string;
        defaultStrokeColor: string;
        defaultStrokeWidth: number;
        highlightFillColor: string;
        highlightStrokeColor: string;
        defaultHighlightMode: HighlightMode;
    };
    drawing: {
        defaultFillColor: string;
        defaultStrokeColor: string;
        defaultStrokeWidth: number;
        defaultTextSize: number;
        defaultFont: string;
        defaultVertexRadius: number;
        defaultVertexFillColor: string;
        defaultVertexStrokeWidth: number;
    };
    share?: {
        service: 'gmf' | 'geogirafe' | null;
        preferNames: boolean;
        createUrl: string;
        getUrl?: string;
        iframeBaseUrl?: string;
    };
    projections: {
        [key: string]: string;
    };
    map: {
        srid: string;
        startZoom: string;
        startPosition: string;
        maxExtent?: string;
        scales: number[];
        constrainScales: boolean;
        constrainRotation: boolean;
        showScaleLine: boolean;
    };
    map3d?: {
        terrainImagery: {
            url: string;
            srid: 4326 | 3857;
            minLoD: number | undefined;
            maxLoD: number | undefined;
            coverageArea: number[] | undefined;
        };
        tilesetsMaxError: number | undefined;
        terrainUrl: string;
        tilesetsUrls: string[];
        maximumZoomDistance: number;
    };
    lidar?: {
        url: string;
    };
    news?: {
        urls: string[];
        autoDisplay: boolean;
        sanitizeConfig?: SanitizeConfig;
    };
    externalLayers?: {
        predefinedSources: {
            label: string;
            type: 'WMS' | 'WMTS';
            url: string;
        }[];
    };
    contextmenu: {
        crs: {
            code: string;
            translation: string;
            format: 'decimal' | 'dms';
            precision: number;
        }[];
        sources: {
            id: string;
            translation: string;
            prefix: string;
            suffix: string;
            precision: number;
            crs: string;
            nodata: number;
            url: string;
            loading: boolean;
        }[];
        links: {
            translation: string;
            crs: string;
            url: string;
        }[];
    };
    crs: {
        code: string;
        definition: string;
    }[];
    csv: {
        encoding: string;
        extension: string;
        includeHeader: boolean;
        quote: string;
        separator: string;
    };
    infoWindow: {
        defaultWindowWidth: string;
        defaultWindowHeight: string;
        defaultWindowPositionTop: string;
        defaultWindowPositionLeft: string;
    };
    offline?: {
        downloadStartZoom: number;
        downloadEndZoom: number;
    };
    query: {
        legacy: boolean;
        sanitizeConfig?: SanitizeConfig;
    };
    gmfauth?: {
        url: string;
        loginRequired: boolean;
        checkSessionOnLoad: boolean;
        audience: string[];
        authMode: 'cookie';
        alwaysSendCookies: boolean;
        refererPolicy: ReferrerPolicy;
        audienceExcludedPaths: string[];
    };
    oauth?: {
        issuer: {
            url: string;
            algorithm: 'oauth2' | 'oidc';
            codeChallengeMethod: string;
            clientId: string;
            scope: string;
            loginRequired: boolean;
            checkSessionOnLoad: boolean;
            audience: string[];
            audienceExcludedPaths: string[];
            alwaysSendCookies: boolean;
            customSilentLoginParams: {
                [key: string]: string;
            };
            customLoginParams: {
                [key: string]: string;
            };
        };
        geomapfish: {
            userInfoUrl: string;
            loginUrl: string;
            logoutUrl: string;
            anonymousUsername: string;
            authMode: 'token' | 'cookie';
            refererPolicy: ReferrerPolicy;
        };
    };
    userdata: {
        source: 'localStorage' | 'server';
        getUrl: string | undefined;
        postUrl: string | undefined;
    };
    contact?: {
        url: string;
        reasons: string[];
        email: string;
    };
    onboarding?: {
        steps: {
            component?: string;
            element: string;
            title: string;
            description: string;
        }[];
    };
    api?: {
        demo: {
            center: string;
            zoom: string;
            basemap: string;
            crosshair: string;
            tooltip: string;
            layers: string;
            multiLayers: string;
            layersWithConfig: string;
            layersWithConfigCenter: string;
        };
    };
    feedback?: {
        url: string;
        method: 'POST' | 'GET';
        components: {
            name: string;
            question: string;
            placement: 'bottom-left' | 'bottom-center' | 'bottom-right' | 'top-left' | 'top-center' | 'top-right' | 'center-left' | 'center-center' | 'center-right';
            margins: string;
        }[];
    };
    filtering?: {
        gmfLayerMetadataUrl?: string;
    };
    permalink?: {
        sanitizeConfig?: SanitizeConfig;
    };
    extendedConfig?: Record<string, object>;
    static readonly DEFAULT_LOCALE = "en-US";
    /**
     * Creates the configuration of the app validating the json passed or giving default values.
     *
     * Every property of config that is not complying with GirafeConfig type is ignored.
     * @param config the configuration
     */
    constructor(config: GirafeConfig);
    private initConfigProjections;
    private initConfigMap3D;
    private initConfigMap;
    private initConfigQuery;
    private initConfigDrawing;
    private initConfigShare;
    private initConfigSelection;
    private initConfigPrint;
    private initConfigSearch;
    private initConfigTreeview;
    private initConfigBasemaps;
    private initConfigLidar;
    private initConfigNews;
    private initConfigCsv;
    private initConfigInfoWindow;
    private initConfigContact;
    private initConfigOffline;
    private initConfigThemes;
    private initConfigLanguages;
    private initConfigInterface;
    private initConfigGeneral;
    private initGmfOauth;
    private initConfigOauth;
    private initUserData;
    private initContextMenu;
    private initCRS;
    private initExternalLayers;
    private initExtendedConfig;
    private initOnboarding;
    private initFeedback;
    private initApiConfig;
    private initConfigFiltering;
    private initPermalinkConfig;
}
export default GirafeConfig;
