/**
 * 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 CommandRegistrar } from '@finos/legend-application';
import { type DepotServerClient } from '@finos/legend-server-depot';
import type { LegendMarketplaceApplicationStore, LegendMarketplaceBaseStore } from '../LegendMarketplaceBaseStore.js';
import { ActionState, type GeneratorFn } from '@finos/legend-shared';
import { type V1_IngestEnvironment, V1_IngestEnvironmentClassification } from '@finos/legend-graph';
import { DataProductViewerState } from './DataProductViewerState.js';
import type { AuthContextProps } from 'react-oidc-context';
import type { LakehouseContractServerClient } from '@finos/legend-server-marketplace';
import { DataProductState, SandboxDataProductState, type BaseDataProductState } from './dataProducts/DataProducts.js';
import { type LakehousePlatformServerClient, type LakehouseIngestServerClient, IngestDeploymentServerConfig } from '@finos/legend-server-lakehouse';
export declare enum DataProductFilterType {
    DEPLOY_TYPE = "DEPLOY_TYPE",
    ENVIRONMENT_CLASSIFICATION = "ENVIRONMENT_CLASSIFICATION"
}
export declare enum DeployType {
    SDLC = "SDLC",
    SANDBOX = "SANDBOX"
}
export interface DataProductFilterConfig {
    sdlcDeployFilter: boolean;
    sandboxDeployFilter: boolean;
    devEnvironmentClassificationFilter: boolean;
    prodParallelEnvironmentClassificationFilter: boolean;
    prodEnvironmentClassificationFilter: boolean;
}
declare class DataProductFilters {
    sdlcDeployFilter: boolean;
    sandboxDeployFilter: boolean;
    devEnvironmentClassificationFilter: boolean;
    prodParallelEnvironmentClassificationFilter: boolean;
    prodEnvironmentClassificationFilter: boolean;
    search?: string | undefined;
    constructor(defaultBooleanFilters: DataProductFilterConfig, search?: string | undefined);
    static default(): DataProductFilters;
    get currentFilterValues(): DataProductFilterConfig;
}
export declare enum DataProductSort {
    NAME_ALPHABETICAL = "Name A-Z",
    NAME_REVERSE_ALPHABETICAL = "Name Z-A"
}
export declare class MarketplaceLakehouseStore implements CommandRegistrar {
    readonly marketplaceBaseStore: LegendMarketplaceBaseStore;
    readonly applicationStore: LegendMarketplaceApplicationStore;
    readonly depotServerClient: DepotServerClient;
    readonly lakehouseContractServerClient: LakehouseContractServerClient;
    readonly lakehousePlatformServerClient: LakehousePlatformServerClient;
    readonly lakehouseIngestServerClient: LakehouseIngestServerClient;
    productStatesMap: Map<string, DataProductState>;
    lakehouseIngestEnvironmentSummaries: IngestDeploymentServerConfig[];
    lakehouseIngestEnvironmentsByDID: Map<string, IngestDeploymentServerConfig>;
    lakehouseIngestEnvironmentDetails: V1_IngestEnvironment[];
    sandboxDataProductStates: SandboxDataProductState[];
    loadingProductsState: ActionState;
    loadingLakehouseEnvironmentSummariesState: ActionState;
    loadingLakehouseEnvironmentsByDIDState: ActionState;
    loadingLakehouseEnvironmentDetailsState: ActionState;
    loadingSandboxDataProductStates: ActionState;
    filter: DataProductFilters;
    sort: DataProductSort;
    dataProductViewer: DataProductViewerState | undefined;
    dummyDataProductStates: DataProductState[];
    constructor(marketplaceBaseStore: LegendMarketplaceBaseStore, lakehouseServerClient: LakehouseContractServerClient, lakehousePlatformServerClient: LakehousePlatformServerClient, lakehouseIngestServerClient: LakehouseIngestServerClient, depotServerClient: DepotServerClient);
    get filterSortProducts(): BaseDataProductState[] | undefined;
    setLakehouseIngestEnvironmentSummaries(summaries: IngestDeploymentServerConfig[]): void;
    setLakehouseIngestEnvironmentsByDID(environmentsByDID: Map<string, IngestDeploymentServerConfig>): void;
    setLakehouseIngestEnvironmentDetails(environmentDetails: V1_IngestEnvironment[]): void;
    setSandboxDataProductStates(sandboxDataProductStates: SandboxDataProductState[]): void;
    setDataProductViewerState(val: DataProductViewerState | undefined): void;
    handleFilterChange(filterType: DataProductFilterType, val: DeployType | V1_IngestEnvironmentClassification | undefined): void;
    handleSearch(query: string | undefined): void;
    setSort(sort: DataProductSort): void;
    fetchDataProducts(): Promise<void>;
    fetchLakehouseEnvironmentSummaries(token: string | undefined): Promise<void>;
    fetchLakehouseEnvironmentSummary(ingestEnvironmentUrn: string, token: string | undefined): Promise<IngestDeploymentServerConfig | undefined>;
    fetchLakehouseEnvironmentsByDID(dids: string[], token: string | undefined): Promise<void>;
    fetchLakehouseEnvironmentDetails(token: string | undefined): Promise<void>;
    fetchSandboxDataProducts(token: string | undefined): Promise<void>;
    init(auth: AuthContextProps): GeneratorFn<void>;
    initWithProduct(gav: string, path: string, auth: AuthContextProps): GeneratorFn<void>;
    initWithSandboxProduct(ingestEnvironmentUrn: string, path: string, auth: AuthContextProps): GeneratorFn<void>;
    registerCommands(): void;
    deregisterCommands(): void;
}
export {};
//# sourceMappingURL=MarketplaceLakehouseStore.d.ts.map