/**
 * 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 PlainObject } from '@finos/legend-shared';
import { type LegendApplicationConfigurationData, type LegendApplicationConfigurationInput, LegendApplicationConfig } from '@finos/legend-application';
import type { AuthProviderProps } from 'react-oidc-context';
import { DataProductConfig } from '@finos/legend-extension-dsl-data-product';
import { LegendMarketplaceEnv } from '../stores/LegendMarketplaceEnvState.js';
import { type LegendAIConfig } from '@finos/legend-lego/legend-ai';
declare class LegendMarketplaceApplicationCoreOptions {
    dataProductConfig: DataProductConfig | undefined;
    newsletterUrl: string | undefined;
    historicalNewsletterUrl: string | undefined;
    generalInquiriesUrl: string | undefined;
    requestInternalAppUrl: string | undefined;
    /**
     * Used for any features that are still in development
     */
    showDevFeatures: boolean;
    highlightedDataProducts: Record<string, string> | undefined;
    /**
     * Default search suggestions to show when the search bar is empty or has no autosuggest results
     */
    defaultSearchSuggestions: string[] | undefined;
    /**
     * Default suggested queries to show in the AI chat welcome screen
     */
    defaultAISuggestedQueries: string[] | undefined;
    private static readonly serialization;
    static create(configData: PlainObject<LegendMarketplaceApplicationCoreOptions>): LegendMarketplaceApplicationCoreOptions;
}
export interface LegendMarketplaceOidcConfig {
    redirectPath: string;
    silentRedirectPath: string;
    authProviderProps: AuthProviderProps;
}
type LegendStudioApplicationInstanceConfigurationData = {
    sdlcProjectIDPrefix: string;
    url: string;
};
export interface LegendMarketplaceApplicationConfigurationData extends LegendApplicationConfigurationData {
    marketplace: {
        url: string;
        subscriptionUrl: string;
        dataProductEnv: string;
        adjacentEnvUrl?: string;
        userSearchUrl?: string | undefined;
        userProfileImageUrl?: string | undefined;
        oidcConfig?: LegendMarketplaceOidcConfig | undefined;
    };
    depot: {
        url: string;
    };
    terminal: {
        url: string;
    };
    engine: {
        url: string;
        queryUrl?: string;
    };
    lakehouse?: {
        url: string;
        platformUrl?: string;
        workflowUrl: string;
        permitWorkflowUrl?: string;
        entitlements: {
            applicationDirectoryUrl: string;
            applicationIDUrl: string;
        };
    };
    assets: {
        baseUrl: string;
        productImageMap: Record<string, string>;
    };
    studio: {
        url: string;
        instances: LegendStudioApplicationInstanceConfigurationData[];
    };
    query: {
        url: string;
    };
    powerBi: {
        url: string;
    };
    datacube: {
        url: string;
    };
    registry?: {
        url: string;
    };
    legendServices?: {
        url: string;
    };
    legendAI?: {
        enabled: boolean;
        llmServiceUrl?: string;
        llmModelName?: string;
        llmModelOptions?: string[];
        sqlExecutionUrl?: string;
        orchestratorUrl?: string;
        orchestratorAuthToken?: string;
        maxJudgeAttempts?: number;
        lakehouseEnvironment?: string;
        enghubDocUrl?: string;
        enthubRequestAccessUrl?: string;
    };
}
export declare class LegendLakehouseEntitlementsConfig {
    applicationDirectoryUrl: string;
    applicationIDUrl: string;
    constructor(applicationDirectoryUrl: string, applicationIDUrl: string);
}
export declare class LegendMarketplaceApplicationConfig extends LegendApplicationConfig {
    readonly options: LegendMarketplaceApplicationCoreOptions;
    readonly marketplaceServerUrl: string;
    readonly marketplaceSubscriptionUrl: string;
    readonly dataProductEnv: LegendMarketplaceEnv;
    readonly adjacentEnvUrl: string | undefined;
    readonly marketplaceUserSearchUrl?: string | undefined;
    readonly marketplaceUserProfileImageUrl?: string | undefined;
    readonly marketplaceOidcConfig?: LegendMarketplaceOidcConfig | undefined;
    readonly engineServerUrl: string;
    readonly registryUrl: string | undefined;
    readonly legendServicesUrl: string | undefined;
    readonly datacubeApplicationUrl: string;
    readonly engineQueryServerUrl?: string | undefined;
    readonly terminalServerUrl: string;
    readonly depotServerUrl: string;
    readonly lakehouseServerUrl: string;
    readonly lakehousePlatformUrl: string;
    readonly lakehouseWorkflowServerUrl: string;
    readonly lakehousePermitWorkflowServerUrl: string | undefined;
    readonly lakehouseEntitlementsConfig: LegendLakehouseEntitlementsConfig | undefined;
    readonly studioApplicationUrl: string;
    readonly studioInstances: LegendStudioApplicationInstanceConfigurationData[];
    readonly queryApplicationUrl: string;
    readonly powerBiUrl: string;
    readonly assetsBaseUrl: string;
    readonly assetsProductImageMap: Record<string, string>;
    readonly legendAIConfig: LegendAIConfig;
    constructor(input: LegendApplicationConfigurationInput<LegendMarketplaceApplicationConfigurationData>);
    private static buildLegendAIConfig;
    getDefaultApplicationStorageKey(): string;
}
export {};
//# sourceMappingURL=LegendMarketplaceApplicationConfig.d.ts.map