/**
 * 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 { DataCubeViewState } from '../DataCubeViewState.js';
import { DataCubeEditorSortsPanelState } from './DataCubeEditorSortsPanelState.js';
import { DataCubeSnapshotController } from '../../services/DataCubeSnapshotService.js';
import { type DataCubeSnapshot, type DataCubeSnapshotExtendedColumn } from '../../core/DataCubeSnapshot.js';
import { type DataCubeColumn } from '../../core/model/DataCubeColumn.js';
import { ActionState } from '@finos/legend-shared';
import { DataCubeEditorGeneralPropertiesPanelState } from './DataCubeEditorGeneralPropertiesPanelState.js';
import { DataCubeEditorColumnPropertiesPanelState } from './DataCubeEditorColumnPropertiesPanelState.js';
import { DataCubeEditorColumnsPanelState } from './DataCubeEditorColumnsPanelState.js';
import { DataCubeEditorVerticalPivotsPanelState } from './DataCubeEditorVerticalPivotsPanelState.js';
import type { DisplayState } from '../../services/DataCubeLayoutService.js';
import { DataCubeEditorHorizontalPivotsPanelState } from './DataCubeEditorHorizontalPivotsPanelState.js';
import { DataCubeEditorPivotLayoutPanelState } from './DataCubeEditorPivotLayoutPanelState.js';
import { DataCubeEditorDimensionsPanelState } from './DataCubeEditorDimensionsPanelState.js';
export declare enum DataCubeEditorTab {
    GENERAL_PROPERTIES = "General Properties",
    COLUMN_PROPERTIES = "Column Properties",
    COLUMNS = "Columns",
    VERTICAL_PIVOTS = "Vertical Pivots",
    DIMENSIONS = "Dimensions",
    HORIZONTAL_PIVOTS = "Horizontal Pivots",
    SORTS = "Sorts"
}
/**
 * This query editor state backs the main form editor of data cube. It supports
 * batching changes before engine, i.e. allowing user to make multiple edits before
 * applying and propgating them.
 *
 * NOTE: It allows almost FULL 1-1 control over the data cube query state.
 * It could also host other form editor states like filter editors, but due to ergonomic
 * reasons, those have been separated out into their own respective query editor states.
 */
export declare class DataCubeEditorState extends DataCubeSnapshotController {
    readonly view: DataCubeViewState;
    readonly display: DisplayState;
    readonly finalizationState: ActionState;
    readonly generalProperties: DataCubeEditorGeneralPropertiesPanelState;
    readonly pivotLayout: DataCubeEditorPivotLayoutPanelState;
    readonly columnProperties: DataCubeEditorColumnPropertiesPanelState;
    readonly columns: DataCubeEditorColumnsPanelState;
    readonly horizontalPivots: DataCubeEditorHorizontalPivotsPanelState;
    readonly verticalPivots: DataCubeEditorVerticalPivotsPanelState;
    readonly dimensions: DataCubeEditorDimensionsPanelState;
    readonly sorts: DataCubeEditorSortsPanelState;
    currentTab: DataCubeEditorTab;
    sourceColumns: DataCubeColumn[];
    leafExtendColumns: DataCubeSnapshotExtendedColumn[];
    groupExtendColumns: DataCubeSnapshotExtendedColumn[];
    constructor(view: DataCubeViewState);
    setCurrentTab(val: DataCubeEditorTab): void;
    applySnapshot(snapshot: DataCubeSnapshot, previousSnapshot: DataCubeSnapshot | undefined): Promise<void>;
    getSnapshotSubscriberName(): string;
    applyChanges(options?: {
        closeAfterApply?: boolean | undefined;
    }): Promise<void>;
}
//# sourceMappingURL=DataCubeEditorState.d.ts.map