/**
 * 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 DataCubeSnapshot, type DataCubeSnapshotExtendedColumn } from '../../core/DataCubeSnapshot.js';
import { type DataCubeColumn } from '../../core/model/DataCubeColumn.js';
import type { DataCubeViewState } from '../DataCubeViewState.js';
import { DataCubeSnapshotController } from '../../services/DataCubeSnapshotService.js';
import { type DataCubeColumnConfiguration } from '../../core/model/DataCubeConfiguration.js';
import { DataCubeExistingColumnEditorState, DataCubeNewColumnState } from './DataCubeColumnEditorState.js';
import { DataCubeColumnKind } from '../../core/DataCubeQueryEngine.js';
declare class DataCubeQueryExtendedColumnState {
    readonly name: string;
    readonly type: string;
    readonly data: DataCubeSnapshotExtendedColumn;
    constructor(data: DataCubeSnapshotExtendedColumn);
}
/**
 * This query editor state backs the form editor for extend columns, i.e. creating new columns.
 */
export declare class DataCubeExtendManagerState extends DataCubeSnapshotController {
    readonly view: DataCubeViewState;
    columnConfigurations: DataCubeColumnConfiguration[];
    selectColumns: DataCubeColumn[];
    sourceColumns: DataCubeColumn[];
    horizontalPivotCastColumns: DataCubeColumn[];
    leafExtendedColumns: DataCubeQueryExtendedColumnState[];
    groupExtendedColumns: DataCubeQueryExtendedColumnState[];
    newColumnEditors: DataCubeNewColumnState[];
    existingColumnEditors: DataCubeExistingColumnEditorState[];
    constructor(view: DataCubeViewState);
    setLeafExtendedColumns(val: DataCubeQueryExtendedColumnState[]): void;
    setGroupExtendedColumns(val: DataCubeQueryExtendedColumnState[]): void;
    get allColumnNames(): string[];
    openNewColumnEditor(referenceColumn?: DataCubeColumnConfiguration | undefined): Promise<void>;
    openExistingColumnEditor(columnName: string): Promise<void>;
    addNewColumn(column: DataCubeSnapshotExtendedColumn, isGroupLevel: boolean, columnKind: DataCubeColumnKind | undefined, editor: DataCubeNewColumnState): void;
    updateColumn(columnName: string, updatedColumn: DataCubeSnapshotExtendedColumn, isGroupLevel: boolean, columnKind: DataCubeColumnKind | undefined): Promise<void>;
    deleteColumn(columnName: string): Promise<void>;
    getSnapshotSubscriberName(): string;
    applySnapshot(snapshot: DataCubeSnapshot, previousSnapshot: DataCubeSnapshot | undefined): Promise<void>;
    applyChanges(): void;
}
export {};
//# sourceMappingURL=DataCubeExtendManagerState.d.ts.map