/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { type ExtensionsConfigurationData, SerializationFactory } from '@finos/legend-shared';
import type { LegendApplicationConfigurationInput } from './LegendApplication.js';
import { type KeyedDocumentationEntry, type DocumentationEntryData, type ContextualDocumentationConfig, type ContextualDocumentationEntry, type DocumentationRegistryEntry, type DocumentationLinkEntry } from '../stores/DocumentationService.js';
import type { SettingOverrideConfigData } from '../stores/SettingService.js';
export interface LegendApplicationVersionData {
    buildTime?: string;
    version: string;
    commitSHA?: string;
}
export interface LegendApplicationLink {
    url: string;
    label: string;
}
export declare class StereotypeConfig {
    profile: string;
    stereotype: string;
    static readonly serialization: SerializationFactory<StereotypeConfig>;
}
export declare class TaggedValueConfig {
    profile: string;
    value: string[];
    static readonly serialization: SerializationFactory<TaggedValueConfig>;
}
export interface LegendApplicationConfigurationData {
    appName: string;
    env: string;
    documentation?: {
        url: string;
        links?: Record<string, LegendApplicationLink>;
        registry?: DocumentationRegistryEntry[];
        entries?: Record<string, DocumentationEntryData>;
        contextualEntries?: ContextualDocumentationConfig;
    };
    application?: {
        storageKey?: string;
        settingsOverrides?: SettingOverrideConfigData;
    };
    legendCookieDomain?: string;
    extensions?: ExtensionsConfigurationData;
}
export declare abstract class LegendApplicationConfig {
    readonly appName: string;
    readonly baseAddress: string | undefined;
    readonly env: string;
    readonly applicationStorageKey: string;
    readonly legendCookieDomain?: string | undefined;
    readonly documentationUrl?: string | undefined;
    readonly documentationLinkEntries?: DocumentationLinkEntry[];
    readonly documentationRegistryEntries: DocumentationRegistryEntry[];
    readonly keyedDocumentationEntries: KeyedDocumentationEntry[];
    readonly contextualDocEntries: ContextualDocumentationEntry[];
    readonly appVersion: string;
    readonly appVersionBuildTime: string | undefined;
    readonly appVersionCommitId: string | undefined;
    constructor(input: LegendApplicationConfigurationInput<LegendApplicationConfigurationData>);
    protected static resolveAbsoluteUrl(url: string): string;
    abstract getDefaultApplicationStorageKey(): string;
}
//# sourceMappingURL=LegendApplicationConfig.d.ts.map