/**
 * 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 } from '../../core/DataCubeSnapshot.js';
import type { DataCubeQueryEditorPanelState } from './DataCubeEditorPanelState.js';
import { DataCubeEditorColumnsSelectorColumnState, DataCubeEditorColumnsSelectorState } from './DataCubeEditorColumnsSelectorState.js';
import type { DataCubeEditorState } from './DataCubeEditorState.js';
import { type DataCubeConfiguration } from '../../core/model/DataCubeConfiguration.js';
export declare class DataCubeEditorBasicColumnsSelectorState extends DataCubeEditorColumnsSelectorState<DataCubeEditorColumnsSelectorColumnState> {
    showHiddenColumns: boolean;
    constructor(editor: DataCubeEditorState, options?: {
        onChange?: ((select: DataCubeEditorColumnsSelectorState<DataCubeEditorColumnsSelectorColumnState>) => void) | undefined;
    });
    cloneColumn(column: DataCubeEditorColumnsSelectorColumnState): DataCubeEditorColumnsSelectorColumnState;
    get availableColumns(): DataCubeEditorColumnsSelectorColumnState[];
    get availableColumnsForDisplay(): DataCubeEditorColumnsSelectorColumnState[];
    get selectedColumnsForDisplay(): DataCubeEditorColumnsSelectorColumnState[];
    setShowHiddenColumns(val: boolean): void;
}
/**
 * This panel allows selection of columns (including extended columns) for the query.
 *
 * NOTE: this does not really represent the `select()` function in the query. Think about
 * this column selection more intuitively from users' perspective, i.e. what columns they
 * wish to see in the grid. Whereas the `select()` function actually impact the data fetching
 * which should be computed based on more than just information coming from this panels, such
 * as horizontal pivots and vertical pivots, since regardless of whether user choose to see
 * those columns or not, they still need to be fetched.
 */
export declare class DataCubeEditorColumnsPanelState implements DataCubeQueryEditorPanelState {
    private readonly _editor;
    readonly selector: DataCubeEditorBasicColumnsSelectorState;
    constructor(editor: DataCubeEditorState);
    /**
     * NOTE: Ideally, this should be called on every changes made to the column selection, but to
     * give user some room for error, i.e. when user accidentally select/deselect columns, we would
     * not propagate this change until user either leaves this panel or explicitly applies changes
     * (i.e. publishes a new snapshot)
     */
    propagateChanges(): void;
    applySnaphot(snapshot: DataCubeSnapshot, configuration: DataCubeConfiguration): void;
    buildSnapshot(newSnapshot: DataCubeSnapshot, baseSnapshot: DataCubeSnapshot): void;
}
//# sourceMappingURL=DataCubeEditorColumnsPanelState.d.ts.map