/**
 * 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, type RequestHeaders, SerializationFactory } from '@finos/legend-shared';
import { type LegendApplicationConfigurationInput, type LegendApplicationConfigurationData, LegendApplicationConfig } from '@finos/legend-application';
import { QueryBuilderConfig } from '@finos/legend-query-builder';
import { DataProductConfig } from '@finos/legend-extension-dsl-data-product';
import { LegendIngestionConfiguration } from './LegendIngestionConfiguration.js';
export declare class ServiceRegistrationEnvironmentConfig {
    env: string;
    executionUrl: string;
    modes: string[];
    managementUrl: string;
    static readonly serialization: SerializationFactory<ServiceRegistrationEnvironmentConfig>;
}
export declare class UserSearchConfig {
    applicationDirectoryUrl: string;
    userProfileImageUrl: string;
    static readonly serialization: SerializationFactory<UserSearchConfig>;
}
declare class LegendStudioApplicationCoreOptions {
    /**
     * Indicates if we should enable strict-mode for graph builder
     *
     * Default to `false`
     */
    enableGraphBuilderStrictMode: boolean;
    /**
     * Indicates whether we enable type ahead in all editors.
     *
     * Default to `false` because of performance reasons for large models.
     */
    typeAheadEnabled: boolean;
    projectCreationGroupIdSuggestion: string;
    /**
     * This flag is for any feature that is not production ready.
     * Used to iterate over features until they are ready for production.
     */
    NonProductionFeatureFlag: boolean;
    /**
     * Indicates if we should keep section index and do not rewrite/flatten the paths shortened by section
     * imports.
     *
     * This flag will be kept until we have full support for section index
     * See https://github.com/finos/legend-studio/issues/1067
     */
    TEMPORARY__preserveSectionIndex: boolean;
    /**
     * This flag can be removed when the support for local connection is official
     * Right now it's done to support the SnowflakeApp creation demo
     * See https://github.com/finos/legend-engine/pull/1819
     */
    TEMPORARY__enableLocalConnectionBuilder: boolean;
    /**
     * This flag enables creating a sandbox project via engine.
     * Remove this flag once workflow is finalized.
     */
    TEMPORARY__enableCreationOfSandboxProjects: boolean;
    /**
     * Provides service registration environment configs.
     *
     * TODO: when we modularize service, we can move this config to DSL Service preset. Then, we can remove
     * the TEMPORARY__ prefix.
     *
     * @modularize
     * See https://github.com/finos/legend-studio/issues/65
     */
    TEMPORARY__serviceRegistrationConfig: ServiceRegistrationEnvironmentConfig[];
    /**
     * Config specific to query builder
     */
    queryBuilderConfig: QueryBuilderConfig | undefined;
    ingestDeploymentConfig: LegendIngestionConfiguration | undefined;
    dataProductConfig: DataProductConfig | undefined;
    userSearchConfig: UserSearchConfig | undefined;
    /**
     * Indicates if we should enable oauth flow
     *
     * Default to `false`
     */
    enableOauthFlow: boolean;
    private static readonly serialization;
    static create(configData: PlainObject<LegendStudioApplicationCoreOptions>): LegendStudioApplicationCoreOptions;
}
export interface LegendStudioApplicationConfigurationData extends LegendApplicationConfigurationData {
    sdlc: {
        url: string;
        baseHeaders?: RequestHeaders;
        client?: string;
        /**
         * Enable the popup-based SDLC re-authentication flow.
         *
         * When `true`, Studio surfaces a "Re-authenticate with SDLC" action
         * and (on a mid-session 401) automatically opens a popup that completes
         * the OAuth dance against the SDLC server — preserving all in-memory
         * editor state instead of doing a top-level navigation that wipes it.
         *
         * The popup uses a same-origin static page as its OAuth `redirect_uri`,
         * derived at runtime from Studio's own origin + base URL (the same way
         * the boot-time `/auth/authorize` flow constructs its `redirect_uri`).
         * The deployment ships that page at `<base-url>/popup-callback.html`;
         * deployments that enable this flag must register that derived URL on
         * the SDLC server's OAuth client allow-list.
         */
        enablePopupReAuth?: boolean;
    };
    depot: {
        url: string;
    };
    engine: {
        url: string;
        queryUrl?: string;
    };
    query?: {
        url: string;
    };
    showcase?: {
        url: string;
    };
    pct?: {
        reportUrl: string;
    };
    legendAI?: {
        url: string;
    };
}
export declare class LegendStudioApplicationConfig extends LegendApplicationConfig {
    readonly options: LegendStudioApplicationCoreOptions;
    readonly engineServerUrl: string;
    readonly engineQueryServerUrl?: string | undefined;
    readonly depotServerUrl: string;
    readonly sdlcServerUrl: string;
    readonly sdlcServerBaseHeaders?: RequestHeaders | undefined;
    readonly sdlcServerClient?: string | undefined;
    readonly sdlcEnablePopupReAuth: boolean;
    readonly queryApplicationUrl?: string | undefined;
    readonly showcaseServerUrl?: string | undefined;
    readonly pctReportUrl?: string | undefined;
    readonly legendAIUrl?: string | undefined;
    constructor(input: LegendApplicationConfigurationInput<LegendStudioApplicationConfigurationData>);
    getDefaultApplicationStorageKey(): string;
}
export {};
//# sourceMappingURL=LegendStudioApplicationConfig.d.ts.map